文档指出 CreateProcess 创建一个在调用进程的安全上下文下运行的进程,而不是当前模拟 token 的安全上下文。这是否意味着无论是否模拟,新流程的权限都相同?
我有以下代码因 ACCESS_DENIED 错误而失败:
- 进程 A 在管理员下运行;
- 进程 A 模拟普通用户“测试”;
- 进程A通过调用CreateProcess启动一个新的进程B;
- 进程 B 调用 OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, ..);
第 4 步失败,出现 ACCESS_DENIED 错误 (5)。我检查了进程 B 是否作为进程 A 在 Administrator 下运行。为什么它在与进程 A 相同的用户上下文下运行时会失败?
最佳答案
正如评论者所说,您需要 CreateProcessAsUser。您可能会发现 MSDN 上的以下示例代码很有帮助,几年前我成功地使用了它:http://support.microsoft.com/kb/165194
关于c++ - 模拟和 CreateProcess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731654/