关于C#:在调试器下运行时,AssignProcessToJobObject失败,并显示” Access Denied”错误

关于C#:在调试器下运行时,AssignProcessToJobObject失败,并显示” Access Denied”错误

AssignProcessToJobObject fails with “Access Denied” error when running under the debugger

您执行AssignProcessToJobObject,并且失败并显示"访问被拒绝",但仅当您在调试器中运行时才如此。为什么会这样?


这使我困惑了大约30分钟。

首先,您可能需要在应用程序中嵌入UAC清单(如此处建议)。像这样的东西:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 
    <!-- Identify the application security requirements. -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level="asInvoker"
            uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
  </assembly>

第二(这就是我坚持的一点),当您在调试器下运行应用程序时,它将在作业对象中创建进程。在将子进程分配到您的工作之前,需要能够脱离哪个子进程。因此(duh),您需要在CreateProcess的标志中指定CREATE_BREAKAWAY_FROM_JOB)。

如果您不在调试器下运行,或者您的父进程在工作中,则不会发生。


这似乎经常咬我,虽然好,但是1800INFORMATION的帖子似乎没有包含很多有用的原因和修复,因此,值得总结一下为什么我会看到这种情况。

  • 尝试自己解决此问题时,请注意此问题
    从CMD.EXE,资源管理器,
    和Visual Studio。尝试从中运行失败的可执行文件
    各个地方都可以帮助确定问题的原因。您
    尽管V.S失败,但该应用仍可以从CMD.EXE查找。
    和Explorer.exe
  • 就我而言,在Win7下,我似乎需要取消注释" supportedOS"
    表示来自app.manifest的Win7兼容性的元素
    文件。从资源管理器运行时,这似乎可以解决问题。至
    添加清单,右键单击该项目,单击"添加",然后找到
    "应用清单文件"。
  • 为了使Visual Studio 2010正常工作,我似乎需要停止使用程序兼容性助手,Tom Minka在此处共享了两种方法来执行此操作:https://stackoverflow.com/a/4232259/86375,请注意,我必须重新启动VS2010以进行建议的更改。

  • 推荐阅读

      linux运行图形界命令?

      linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,

      linux怎样运行命令?

      linux怎样运行命令?,系统,工作,信息,基础,地址,命令,目录,工具,密码,一致,Lin

      linux执行多次命令?

      linux执行多次命令?,系统,信息,标准,工作,情况,命令,周期性,服务,代码,时间,l

      linux编译完运行命令?

      linux编译完运行命令?,系统,代码,环境,工具,信息,命令,文件,程序,终端,编辑,

      linux命令程序运行?

      linux命令程序运行?,状态,系统,服务,情况,命令,进程,软件,数据,发行,时间,Lin

      linux显示操作命令?

      linux显示操作命令?,系统,工作,地址,信息,管理,命令,目录,基础,工具,标准,lin

      linux命令行显示路径?

      linux命令行显示路径?,系统,数据,信息,命令,工作,时间,标准,文件,目录,名称,l

      linux并行化执行命令?

      linux并行化执行命令?,系统,工具,信息,命令,名称,网络,管理,首页,服务,暂停,L

      如何执行linux命令?

      如何执行linux命令?,单位,系统,网络,信息,权威,命令,文件,音乐,目录,选项,mv

      linux运行脚本命令?

      linux运行脚本命令?,系统,代码,服务,文件,工具,平台,网站,脚本,命令,方法,Lin

      linux显示详细命令?

      linux显示详细命令?,工作,系统,信息,地址,命令,标准,数据,目录,文件,名称,执

      linux打断执行的命令?

      linux打断执行的命令?,系统,状态,网站,标准,通用,客服,人员,名字,网络,暂停,L

      linux命令后加运行?

      linux命令后加运行?,状态,暂停,工具,单位,进程,环境,网络,系统,权威,第一,mv

      linux显示上一个命令?

      linux显示上一个命令?,信息,机器人,人工智能,第一,地方,工具,在线,网站,代

      linux运行多个命令?

      linux运行多个命令?,环境,软件,系统,工作,服务,连续,命令,指令,分号,冲突,lin

      linux命令没执行完?

      linux命令没执行完?,系统,设备,工具,情况,密码,状态,电脑,管理,材料,服务,Lin

      linux运行命令查看?

      linux运行命令查看?,系统,信息,状态,命令,名称,情况,地址,软件,进程,第一,lin

      linux满屏显示命令?

      linux满屏显示命令?,工具,系统,服务,电脑,网络,技术,信息,数据,上会,软件,如

      shell中执行linux命令?

      shell中执行linux命令?,系统,名称,环境,管理,工作,代码,技术,软件,经理,基础

      linux中命令运行软件?

      linux中命令运行软件?,软件,系统,名称,工具,电脑,位置,环境,中心,在线,初级,