在CreateProcessAsUser中使用lpEnvironment

时间:2016-01-15 15:00:27

标签: createprocessasuser

我需要了解在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服务的内存块而不是登录用户下创建的吗?

0 个答案:

没有答案