首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateProcessAsUser工作,CreateProcessWithTokenW不工作

CreateProcessAsUser工作,CreateProcessWithTokenW不工作
EN

Stack Overflow用户
提问于 2016-07-18 00:07:33
回答 1查看 3K关注 0票数 1

我们有一个运行为LocalSystem的服务。我们使用CreateProcessAsUser和LoadUserProfile作为特定用户启动一个工作应用程序。效果很好。但是,如果我们试图使用CreateProcessWithTokenW来避免显式加载和管理用户配置文件,则会失败,事件日志中记录了以下内容:

代码语言:javascript
复制
Faulting application name: SomeApp.exe, version: 1.0.0.0, time stamp: 0x578a7819
Faulting module name: KERNELBASE.dll, version: 10.0.10586.494, time stamp: 0x5775e4c5
Exception code: 0xc06d007e
Fault offset: 0x0000000000071f28
Faulting process id: 0x24e4
Faulting application start time: 0x01d1df8d223316a6
Faulting application path: C:\SomePath\SomeApp.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: a2310c0d-7ddf-4241-92c9-de03e8de71e8
Faulting package full name: 
Faulting package-relative application ID:

有什么办法可以让CreateProcessWithTokenW工作吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-18 17:18:48

当CreateProcessWithTokenW调用- system对ncalrpc:SECLOGON进行RPC调用时,它实际上是在一些svchost上下文中完成的主要任务。SeclCreateProcessWithLogonW从seclogon.dll打来。这里是这个函数调用的trase:

内部CreateProcessAsUserW调用,但在此之前-您可以查看调用-SetTokenInformation(..TokenSessionId.)-因此分配给令牌的另一个会话in (在MSDN中阅读有关此问题的注释)进程在令牌中指定的会话中运行。默认情况下,这是调用LogonUser的同一个会话。若要更改会话,请使用SetTokenInformation函数。)这是SessionId吗?这是您的服务-寻找呼叫ProcessIdToSessionIdStub。但是我们确实需要有交互式的SessionId作为标记,而不是服务。因此,我的结论-- CreateProcessWithTokenW不适合从服务上执行交互过程。

-编辑

CreateProcessWithTokenW -- CreateProcessAsUserW周围非常厚的外壳。CreateProcessAsUserW需要SE_ASSIGNPRIMARYTOKEN_PRIVILEGE,但CreateProcessWithTokenW不需要。出于这个原因,CreateProcessWithTokenW使用远程调用对seclogon服务(其中有SE_ASSIGNPRIMARYTOKEN_PRIVILEGE)进行内部调用CreateProcessAsUserW。但如果我们有SE_ASSIGNPRIMARYTOKEN_PRIVILEGE -更好的直接打电话给CreateProcessAsUserW自己。CreateProcessWithTokenW的主要限制是他在令牌中设置SessionId,基于调用进程SessionId,我们不能改变这一点。但是,CreateProcessAsUserW没有在令牌中修改SessionId,所以我们可以通过在令牌中自我设置交互式SessionId,或者什么也不做,如果这个令牌已经从交互式会话中产生。如果我们从服务启动的应用程序调用CreateProcessWithTokenW,则将在没有交互窗口站(属于会话0)上运行。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38427094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档