c++ - 模拟和 CreateProcess

标签 c++ windows security process acl

文档指出 CreateProcess 创建一个在调用进程的安全上下文下运行的进程,而不是当前模拟 token 的安全上下文。这是否意味着无论是否模拟,新流程的权限都相同?

我有以下代码因 ACCESS_DENIED 错误而失败:

  1. 进程 A 在管理员下运行;
  2. 进程 A 模拟普通用户“测试”;
  3. 进程A通过调用CreateProcess启动一个新的进程B;
  4. 进程 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/

相关文章:

windows - Cmd 和感叹号 - 第二部分

java - 寻找合适的无限强度文件

php - 跨站点伪造 (CSRF) 和公共(public)应用程序接口(interface)

c++ - 是否可以在不使用 main() 函数的情况下编写程序?

c++ - 如何检测 QString 是否由所有数字字符组成?

windows - (Windows) 如何锁定所有应用程序(资源管理器、任务管理器等)并仅使浏览器处于事件状态?

.net - 在基于声明的应用程序中应用自定义声明

c++ - 从并行线程在主 Maya 线程上执行代码

c++ - 仅 block 的 HoG 特征

ruby - 在 Windows 7 上的 Ruby 1.9.2 中播放声音?