Windows 从浏览器启动程序时传递参数

Windows 从浏览器启动程序时传递参数,windows,internet-explorer,registry,Windows,Internet Explorer,Registry,我正在尝试从浏览器启动应用程序(.exe) 具体应用在启动时需要4个参数,分别是:firstname、lastname、id、info 当我启动程序时,有没有办法在Internet Explorer地址栏上添加这些参数 我的意思是这样的: “myapp://-firstname-lastname-id-info” (我只是设法将这些参数直接添加到windows注册表中,它是这样工作的。但这没有帮助……我需要在启动应用程序时输入它们) 我已将此添加到我的windows注册表: [HKEY_CLAS

我正在尝试从浏览器启动应用程序(.exe)

具体应用在启动时需要4个参数,分别是:firstname、lastname、id、info

当我启动程序时,有没有办法在Internet Explorer地址栏上添加这些参数

我的意思是这样的:

“myapp://-firstname-lastname-id-info”

(我只是设法将这些参数直接添加到windows注册表中,它是这样工作的。但这没有帮助……我需要在启动应用程序时输入它们)

我已将此添加到我的windows注册表:

[HKEY_CLASSES_ROOT\myapp]
@="URL:myprogram Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\myapp\DefaultIcon]
@="\"C:\\myapp.exe\""

[HKEY_CLASSES_ROOT\myapp\shell]

[HKEY_CLASSES_ROOT\myapp\shell\open]

[HKEY_CLASSES_ROOT\vsa\shell\open\command]
@="\"C:\\myapp\" "%1" 
已经谢谢你的帮助了!我希望有人知道如何解决这个问题……:)


ps.Im使用windows 7 64位和Internet Explorer 10。

您不能简单地将多个命令行参数传递给应用程序(除非它们如您所示在注册表中明确列出)

相反,您必须对应用程序的可执行文件进行编码,以便它能够处理应用程序协议URL字符串。因此,浏览器会调用您的代码,如下所示:

C:\apps\myapp.exe "myapp:myParam?myParam2&myParam3&myParam4"
可执行文件必须能够处理此字符串并进行适当处理。您必须小心避免在解析此字符串时出现安全漏洞,因为任何网页都可能利用此漏洞逃离浏览器沙箱并攻击用户系统

这篇文章中有更多关于应用程序协议的信息: