【发布时间】:2014-03-04 02:51:11
【问题描述】:
我一直在努力在另一个注册用户帐户下启动在本地系统帐户下启动的进程(通过远程部署服务)。我已按照以下步骤操作:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379608%28v=vs.85%29.aspx
它可以在我的本地 XP 机器上运行。 IE。我的进程从注册的用户帐户开始,并在正确的上下文中执行所有内容。但是其中一位用户(也在 XP 上)有问题,在 CreateProcessAsUser 之后得到错误代码 5。我无法重现这一点,并试图调查为什么会发生这种情况。 有趣的是,我什至删除了我的注册管理员在我有我的 exe 的特定文件夹上的读取/执行权限,但它仍然运行所有内容,所以我不太确定在哪里寻找问题的根源。 为了解决这个问题,我将不胜感激任何建议。也许您有类似的经历并设法找到解决此问题的方法?
谢谢!
PS 我正在通过 psexec /si cmd 模拟本地系统管理员
【问题讨论】:
-
我认为你的链接有误。
-
该帐户是否具有适当的登录权限? (需要哪种登录权限取决于您传递给
LogonUser的标志。) -
@HarryJohnston:谢谢,修复了链接。正如我所提到的,当我使用系统帐户时,它在我的机器上运行良好,并且用户可以在目标用户帐户下登录时运行该进程(即用户有权执行此二进制文件)。所以不完全确定为什么访问被拒绝。顺便说一句,该软件包是通过 SCCM 进行广告宣传的,所以我想知道是否还有其他我在重现环境方面做得不对的地方。
-
我建议添加诊断代码来检查运行
CreateProcessAsUser的安全上下文。特别要确保您拥有SE_INCREASE_QUOTA_NAME和SE_ASSIGNPRIMARYTOKEN_NAME权限;如果它们不可用,CreateProcessAsUser将失败并出现拒绝访问错误。 -
谢谢哈利,最后我完全按照这个例子+启用了所有附加到令牌的特权。错误变成了更有意义的消息。这实际上是一种本地安全策略限制,不允许未知的可执行文件运行。
标签: c windows winapi admin sccm