以标准用户身份打开默认浏览器 (C++)

Dis*_*sco 4 c++ uac shellexecute windows-vista windows-7

我目前正在使用 ShellExecute“打开”在用户浏览器中打开一个 URL,但在 Win7 和 Vista 中遇到了一些麻烦,因为该程序作为服务运行。

当 ShellExecute 打开浏览器时,它似乎读取的是“本地管理员”配置文件而不是用户的配置文件。例如,如果键盘上的用户将 Firefox 作为他的默认浏览器,它可能会打开 IE(这是管理员的默认设置)。

我知道“runas”动词可以用来提升,但你如何反其道而行之?是否可以通过服务在标准用户桌面上的默认浏览器中打开 URL?

Bri*_*ndy 5

ShellExecute 将在与您正在运行的进程相同的会话和相同用户的上下文中执行程序。

如果您想使用不同的会话或用户令牌,您可以使用CreateProcessAsUser Win32 API。

有多种方法可以获取用户令牌,例如您可以调用 Win32 API: