程序1使用SetEnvironment并调用ShellExecute来启动程序2.程序2调用GetEnvironment并从中检索值。令人惊讶的是,这是因为我在MSDN中读过,SetEnvironment是特定于流程的(至少在我的情况下)。 ShellExecute是否在内部调用CreateProcess(作为子进程),而后者又允许程序2访问在程序1中创建和设置的ENV变量....我使用SetEnvironment来创建和使用与windows用户和系统变量完全不同的ENV var。
答案 0 :(得分:1)
它将共享环境,但不会在运行提升时运行(verb =“runas”)。
然后,您需要创建一个中间包装应用程序(已提升),在使用CreateProcess()或类似方法重新启动之前设置环境。
这是因为非特权用户可能会将PATH更改为指向不良内容(带有恶意DLL的目录),然后提升的应用程序将面临风险,因此必须明确解决此问题。