如果从Windows 8 RTM中设置的提升进程和非默认浏览器运行,ShellExecute将失败

Bru*_*run 8 security winapi shellexecute windows-8

在Windows 8 RTM(Chrome,Firefox)中设置非默认浏览器,并尝试运行如下代码:

ShellExecute(NULL, "open", "http://stackoverflow.com", NULL, NULL, SW_SHOWNORMAL);

没关系.但是然后将清单更改为需要管理权限或只是"以管理员身份运行".

代码不起作用.

好的,然后尝试使用"以管理员身份运行"运行任何应用程序.

你会看到相同的结果,链接不起作用.

将默认浏览器更改回IE - >一切正常.

在Windows 8以前的版本中,没有这样的行为.

到底是怎么回事?

PS.看来微软在他们自己的软件中遇到了同样的问题:) Windows 8 RTM上的Visual Studio 2012 Web发布无法启动浏览器

Ric*_*ahl 3

直到今天我在 Chrome 上也看到了同样的行为。花了一些时间试图弄清楚发生了什么,但在很长一段时间内也无法让 Chrome 在提升的权限下提供 ShellExecute() 。提升权限(即 UAC 对话框或以管理员身份运行)或什至完全关闭 UAC 时失败。

我最终卸载并重新安装了 Chrome,这实际上解决了这个问题。

也看到了其他浏览器的行为,但是在尝试了几次 FireFox 之后,我进入了 FireFox 的“设置默认程序”设置,并明确(即在 Windows 中)设置 .htm 文件和 HTTP 协议的关联。这也有效。

所以看起来这是某种注册问题,而不是 Windows 中的实际问题。我要尝试的第一件事是在 Windows 中显式设置关联(而不是在浏览器中设置默认浏览器)。如果失败请尝试重新安装浏览器...