使用此处发布的代码在卸载后启动网页后,我注意到在启动卸载ShellExec
程序时使用“程序和功能”控制面板默认使用的提升凭据启动浏览器。
在卸载期间使用ShellExecAsOriginalUser
被记录为不可能,并且此处提出的建议似乎不适用于想要访问 URL 的情况。
有关如何处理此问题的任何建议?
使用此处发布的代码在卸载后启动网页后,我注意到在启动卸载ShellExec
程序时使用“程序和功能”控制面板默认使用的提升凭据启动浏览器。
在卸载期间使用ShellExecAsOriginalUser
被记录为不可能,并且此处提出的建议似乎不适用于想要访问 URL 的情况。
有关如何处理此问题的任何建议?
基于How to run exe with/without boostedprivilege from PowerShell,这似乎可以解决问题:
Exec('explorer', 'https://www.example.com/', '', SW_SHOW, ewNoWait, ErrorCode);
我相信它有效,因为虽然代码显然运行explorer
进程提升,但资源管理器不允许多个实例。因此,新实例只会要求资源管理器的现有实例(未提升)打开 URL。Explorer 的现有非提升实例将运行 Web 浏览器的非提升实例。
它类似于网络浏览器本身的工作方式。如果您chrome url
从提升的进程(如卸载/安装程序)运行(或任何其他浏览器),如果尚未运行 Chrome 进程,则 URL 将在新的提升的 Chrome 浏览器中打开。但是,如果某个 Chrome 进程已经在运行,那么新提升的进程只会要求现有的非提升进程打开 URL。
唯一的区别是,虽然并不总是有一些 Web 浏览器进程在运行,但总是有一个(未提升的)资源管理器进程。实际上,即使没有,Explorer 也会自我贬低。