本地系统管理下的CreateProcessAsUser返回“;5:拒绝访问;

本地系统管理下的CreateProcessAsUser返回“;5:拒绝访问;,c,windows,winapi,admin,sccm,C,Windows,Winapi,Admin,Sccm,我一直在努力启动另一个注册用户帐户下的本地系统帐户(通过远程部署服务)启动的进程。我遵循了以下步骤: 它在我本地的XP机器上工作。即,我的流程从注册用户帐户开始,并在正确的上下文中执行所有操作。但是其中一个用户(也在XP上)有问题,在CreateProcessAsUser之后获得错误代码5。我无法复制这一点,并试图调查为什么会发生这种情况。 有趣的是,我甚至删除了注册管理员在我的exe所在的特定文件夹上的读取/执行权限,但它仍然运行所有内容,因此我不太确定从何处查找问题的根源。 为了解决这个问

我一直在努力启动另一个注册用户帐户下的本地系统帐户(通过远程部署服务)启动的进程。我遵循了以下步骤:

它在我本地的XP机器上工作。即,我的流程从注册用户帐户开始,并在正确的上下文中执行所有操作。但是其中一个用户(也在XP上)有问题,在CreateProcessAsUser之后获得错误代码5。我无法复制这一点,并试图调查为什么会发生这种情况。 有趣的是,我甚至删除了注册管理员在我的exe所在的特定文件夹上的读取/执行权限,但它仍然运行所有内容,因此我不太确定从何处查找问题的根源。 为了解决这个问题,我希望您能给我一些建议。也许你有过类似的经历,并设法找到了解决这个问题的方法

谢谢


PS我正在通过psexec/si cmd模拟本地系统管理员,最终问题是本地系统帐户的本地安全策略限制+启用允许启动进程的令牌上的所有权限。
至于SCCM,在我完全遵循MSDN示例并在SCCM包上启用交互后,一切正常。

我认为您在那里找到了错误的链接。该帐户是否具有相应的登录权限?(需要哪个登录权限取决于您传递给
LogonUser
的标志)@HarryJohnston:谢谢,修复了链接。正如我提到的,当我使用系统帐户时,它在我的机器上运行良好,当用户使用目标用户帐户登录时,可以运行该进程(即,用户有权执行此二进制文件)。所以我不太清楚为什么访问会被拒绝。顺便说一句,该软件包是通过SCCM发布的,因此我想知道是否有其他事情我没有正确地复制环境。我建议添加诊断代码,以检查运行
CreateProcessAsUser
的安全上下文。特别是要确保您拥有
SE_rease_QUOTA_NAME
SE_ASSIGNPRIMARYTOKEN_NAME
特权
CreateProcessAsUser
如果不可用,则会出现拒绝访问错误。谢谢Harry,最后我按照示例完全+启用了连接到令牌的所有特权。错误变成了更有意义的消息。这实际上是一个本地安全策略限制,不允许运行未知的可执行文件。