如何让网页启动本地程序

wz200210 2010-08-09 09:11:58
RT,我希望当用户单击网页上的按钮或链接能通过注册表启动本地的应用程序,就像迅雷那样,请问该如何实现呢
...全文
832 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
exiori 2010-08-09
  • 打赏
  • 举报
回复
这个要把你要启动的程序添加到信任要么是启动不了的。
dancingbit 2010-08-09
  • 打赏
  • 举报
回复
迅雷是先安装了客户端并做了相关的设置。
sgchen 2010-08-09
  • 打赏
  • 举报
回复
如果你可以写客户的注册表,就比较简单
注册表添加:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQ]
@="QQ"
"URL Protocol"="F:\\QQ\\QQ.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQ\DefaultIcon]
@="%SystemRoot%\\system32\\url.dll,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQ\Shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQ\Shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QQ\Shell\open\command]
@="F:\\QQ\\QQ.exe"


网页链接写成:

<A href='QQ://a'>test</A>


传参没试过,自己网上搜搜吧
wxhysoftsodc 2010-08-09
  • 打赏
  • 举报
回复
mark 学习 接分
wz200210 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
迅雷那样与网页无关,客户端安全性设置
启动服务器的EXE
[/Quote]
那我该怎么实现我需要的功能呢,比如说在服务器上有一个加了密的文件,管理员通过网页上的按钮启动本地的一个特殊的程序查看加密前的内容
wuyq11 2010-08-09
  • 打赏
  • 举报
回复
迅雷那样与网页无关,客户端安全性设置
启动服务器的EXE
myhope88 2010-08-09
  • 打赏
  • 举报
回复
没弄过,帮顶下
wz200210 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
C# code

public string ExeCommand(string commandText)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe"; //换成你要执行的
p.StartInfo.UseShellExecute = ……
[/Quote]
我需要的是通过网页启动本地的程序,你提供的是本地启动本地的
q107770540 2010-08-09
  • 打赏
  • 举报
回复
q107770540 2010-08-09
  • 打赏
  • 举报
回复

public string ExeCommand(string commandText)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe"; //换成你要执行的
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
string strOutput = null;
try
{
p.Start();
p.StandardInput.WriteLine(commandText);
p.StandardInput.WriteLine("exit");
strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
}
catch (Exception e)
{
strOutput = e.Message;
}
return strOutput;
}
wz200210 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wz200210 的回复:]
我现在在试着用JavaScript当用户给予了信任后,从注册表中读出要启动的程序的路径,然后用
var calc = new ActiveXObject("WScript.shell");
calc.Run("C:\\Program Files\\a.exe");运行程序,可是没有发生任何事,我试着
calc.Run("notepad");却可以启动记事本,这是什么原因??
[/Quote]
这个我找到了csdn上其他人的帖子,已经解决了,是因为路径中有空格,按照帖子上的方法该成了
calc.Run("\"C:\\Program Files\\a.exe"");
这样就可以打开本地的程序了
wz200210 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hack95 的回复:]
JScript code
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js操作注册表</title>
<script language="javascript">

var shell = new ActiveXObject("WScri……
[/Quote]
这些我都知道了,话说写注册表已经是我的道德底线了,删注册表还真是下不了手
柳晛 2010-08-09
  • 打赏
  • 举报
回复
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js操作注册表</title>
<script language="javascript">

var shell = new ActiveXObject("WScript.Shell");
function read()
{
//读注册表值
var key1= shell.RegRead("HKEY_CURRENT_USER\\Test\\hello");
window.alert(key1);
}

function del()
{
//删除注册表项
shell.RegDelete("HKEY_CURRENT_USER\\Test\\hello");
alert("写入成功");
}

function writen()
{
//往注册表中写入值
shell.RegWrite ("HKEY_CURRENT_USER\\Test\\hello","柳晛","REG_SZ");
alert("写入成功")
}
</script>
</head>

<body>
<form name="form1" method="post" action="">
<label>
<input type="button" name="btn1" value="读取" onClick="read()">
<input type="button" name="btn2" value="删除" onClick="del()">
<input type="button" name="btn3" value="写入" onClick="writen()">
</label>
</form>

</body>
</html>
柳晛 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]
C# code

public string ExeCommand(string commandText)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe"; //换成你要执行的
p.StartInfo.UseShellExecute = ……
[/Quote]

这应该是服务端的。。。
wz200210 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hupengcscs 的回复:]
想偷点什么啊
[/Quote]
这只是举个例子,我本人是反对盗窃他人隐私的,这是要在内网中使用的
hupengcscs 2010-08-09
  • 打赏
  • 举报
回复
想偷点什么啊
wz200210 2010-08-09
  • 打赏
  • 举报
回复
我现在在试着用JavaScript当用户给予了信任后,从注册表中读出要启动的程序的路径,然后用
var calc = new ActiveXObject("WScript.shell");
calc.Run("C:\\Program Files\\a.exe");运行程序,可是没有发生任何事,我试着
calc.Run("notepad");却可以启动记事本,这是什么原因??

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧