C# 将进程作为网络服务启动
我正在尝试使用用户网络服务启动一个进程,该服务在本地系统下运行。为此,我使用以下pinvoke操作序列:C# 将进程作为网络服务启动,c#,C#,我正在尝试使用用户网络服务启动一个进程,该服务在本地系统下运行。为此,我使用以下pinvoke操作序列: LogonUser() DuplicateTokenEx() LoadUserProfile() CreateEnvironmentBlock() CreateProcessAsUser() 使用上述步骤,我能够启动流程-我在事件查看器中看到流程创建事件。但是,我正在创建的进程是一个C#应用程序,它生成一个conhost.exe子进程,并可能由于conhost.exe子进程崩溃而立即崩溃(也
LogonUser()
DuplicateTokenEx()
LoadUserProfile()
CreateEnvironmentBlock()
CreateProcessAsUser()
我的方法有什么明显的错误吗?我是否遗漏了某个步骤?问题在于
STARTUP\u INFO
结构的lpDesktop
字段设置不正确。如果该值未设置为string.Empty
,则新进程将尝试使用其无权访问的父进程的桌面。关注文件访问错误。网络服务帐户可能无法访问必要的文件,您可以使用Process Monitor检查哪些文件,然后确定是否要更改文件NTFS权限以允许访问。我以前尝试过此操作,没有发现任何立即被拒绝的可疑访问错误。另外,由于在网络服务下运行的服务能够通过process.start()直接成功地启动此进程,问题是它是如何做到的?