c++ - 将 JobObject 分配给从 SYSTEM 服务启动的具有非零会话 id 的进程
问题描述
我有一个 Windows SYSTEM 服务,它需要在登录用户的上下文中启动一个新进程。除此之外,我需要为具有一定限制的新流程创建一个作业。
我正在提取 explorer.exe 的进程令牌并将其复制以创建主令牌。我使用这个令牌CreateProcessAsUser
来创建在用户上下文中运行的新进程,会话 id 非零。当我将作业分配给此进程时,AssignProcessToJobObject
功能失败并出现访问被拒绝错误。具体来说,我无法设置JOBOBJECT_BASIC_UI_RESTRICTIONS
限制(JOBOBJECT_EXTENDED_LIMIT_INFORMATION
虽然有效)。
该进程被创建为挂起,在分配作业后,我正在恢复线程。
当我使用当前进程的令牌(即会话 id 为 0 的 SYSTEM 服务)而不是 explorer.exe 时,一切正常。
我正在 Windows 10 上测试这个
解决方案
推荐阅读
- mysql - 在 MySQL 中聚合一个简单的 COUNT
- kubernetes - Kubernetes 存储持久文件
- google-bigquery - 我们如何保护 Google 默认凭据文件?
- matlab - 如何在像素值中找到轴下方的区域
- c# - Sitecore 自定义 RSS 提要
- swift - 我想要一个 imageView 图像等于一个 CollectionView 图像当它被点击时?
- python - 在 NumPy 中计算距离矩阵的有效方法
- oracle - 不允许在多行块 Oracle Forms 中输入值
- unit-testing - Puppeteer:面临 page.goto(url) 的问题并截取屏幕截图
- php - Wamp 服务器无法使用 Word Press 运行 Web 应用程序