我目前正在使用 ShellExecute“打开”在用户浏览器中打开 URL,但在 Win7 和 Vista 中遇到了一些麻烦,因为该程序作为服务运行提升。
当 ShellExecute 打开浏览器时,它似乎读取“本地管理员”配置文件而不是用户的配置文件。例如,如果键盘上的用户将 Firefox 作为默认浏览器,则可能会打开 IE(这是管理员的默认浏览器)。
我知道“runas”动词可以用来提升,但是反过来你怎么做呢?有没有办法通过服务在标准用户桌面上的默认浏览器中打开 URL?
ShellExecute 将在与您正在运行的进程相同的会话和相同用户的上下文中执行程序。
如果您想使用不同的会话或用户令牌,您可以使用创建进程为用户 http://msdn.microsoft.com/en-us/library/ms682429(VS.85).aspxWin32 API。
获取用户令牌的方法有多种,例如可以调用Win32 API:
-
登录用户 http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx如果您知道用户名和密码
-
WTS查询用户令牌 http://msdn.microsoft.com/en-us/library/aa383840(VS.85).aspx对于任何给定的会话 ID。
-
开放进程令牌 http://msdn.microsoft.com/en-us/library/aa379295(VS.85).aspx如果你有另一个进程句柄
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)