我需要了解在CreateProcessAsUser中使用lpEnvironment。
我的解决方案中有两行代码,由运行为本地系统的Windows服务调用。
CreateProcessAsUser(hTokenCpy,null,applicationName,ref saProcess,ref saThread,false,CREATE_UNICODE_ENVIRONMENT,hEnv,null,ref si,out procInfo)
在调用此
后调用CreateEnvironmentBlock(输出hEnv,hTokenCpy,false)|| hEnv == IntPtr.Zero)
但是,如果对CreateProcessAsUser的调用失败。
通过传递hEnv / IpEnvironment = 0
进行另一次尝试CreateProcessAsUser(hTokenCpy,null,applicationName,ref saProcess,ref saThread,false,0,IntPtr.Zero,null,ref si,out procInfo
但是,当在特定用户名下创建进程时,创建的进程无法与桌面交互。即使登录用户和运行该进程的用户是相同的。
这是因为进程是在Windows服务的内存块而不是登录用户下创建的吗?