Shellexecute 是否与启动进程共享环境变量

Vik*_*kas 5 windows shellexecute

程序 1 使用 SetEnvironment 并调用 ShellExecute 来启动程序 2。程序 2 调用 GetEnvironment 并从中检索值。令人惊讶的是,正如我在 MSDN 中读到的那样,SetEnvironment 是特定于流程的(至少在我的情况下)。ShellExecute 是否在内部调用 CreateProcess(作为子进程),这又允许程序 2 访问在程序 1 中创建和设置的 ENV 变量...我使用 SetEnvironment 来创建和使用与 Windows 用户和系统变量完全不同的 ENV 变量。

Mac*_*cke 4

它将共享环境,但在提升运行时不会共享环境(verb="runas")。

然后,您需要创建一个中间包装应用程序(已提升),在使用 CreateProcess() 或类似方法重新启动之前设置环境。

这是因为非特权用户可能会将 PATH 更改为指向不良内容(带有恶意 DLL 的目录),然后提升的应用程序将面临风险,因此必须明确解决此问题。

  • 恶意程序不会以管理员身份运行。或者如果确实如此,它可以立即做它的事情。它是为了保护你允许跨越边界的东西。 (2认同)