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

时间:2013-08-28 09:32:32

标签: windows internet-explorer registry

我正在尝试从浏览器启动应用程序(.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。我使用Windows 7 64位和Internet Explorer 10。

1 个答案:

答案 0 :(得分:1)

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

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

C:\apps\myapp.exe "myapp:myParam?myParam2&myParam3&myParam4"

可执行文件必须能够处理此字符串并对其进行适当处理。您必须注意避免在解析此字符串时出现安全漏洞,因为任何网页都可能利用这里的漏洞逃离浏览器沙箱并攻击用户的系统。

此帖中有关于应用程序协议的更多信息:http://blogs.msdn.com/b/ieinternals/archive/2011/07/14/url-protocols-application-protocols-and-asynchronous-pluggable-protocols-oh-my.aspx