我正在尝试从我的浏览器启动一个应用程序 (.exe)。
具体的app在启动时需要4个arguments/parameters,分别是: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"
感谢您的帮助!我希望有人知道如何解决这个问题...... :)
附言。我使用的是 Windows 7 64 位和 Internet Explorer 10。
最佳答案
您不能简单地将多个命令行参数传递给您的应用程序(除非它们在注册表中明确列出,如您所示)。
相反,您必须对应用程序的可执行文件进行编码,以便它能够处理应用程序协议(protocol) URL 字符串。因此,您的代码由浏览器调用,如下所示:
C:\apps\myapp.exe "myapp:myParam?myParam2&myParam3&myParam4"
可执行文件必须能够处理此字符串并适本地处理它。您必须注意避免在解析此字符串时出现安全漏洞,因为任何网页都可以利用此处的漏洞来逃避浏览器沙箱并攻击用户的系统。
这篇文章中有更多关于应用程序协议(protocol)的信息:http://blogs.msdn.com/b/ieinternals/archive/2011/07/14/url-protocols-application-protocols-and-asynchronous-pluggable-protocols-oh-my.aspx
关于windows - 从浏览器启动程序时传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484215/