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

标签 windows internet-explorer registry

我正在尝试从我的浏览器启动一个应用程序 (.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/

相关文章:

c++ - Hook OutputDebugStringA 引发异常

windows - 在批处理文件的 if/else 语句中使用 ")"

css - IE9-10 高度 : 100% doesn't work

delphi - 如何以编程方式更改文件关联而不需要提升

c# - 如何从注册表中获取key的默认值

c++ - RegQueryValueEx - 将什么代码添加到此函数以显示 ERROR_SUCCESS

database - 共享文件数据库建议

python - 如何在 Python 中以 VS 作为 IDE 使用 OpenCV

html - IE 和 Edge 的网站 CSS 加载问题

Javascript Date.parse 帮助