【问题标题】:What's the difference of launching native executable from Visual Studio with launching the exe by myself?从 Visual Studio 启动本机可执行文件与自己启动 exe 有什么区别?
【发布时间】:2016-10-11 07:41:03
【问题描述】:

详情:

  1. 如果我直接启动某个功能,它会不起作用

  2. 从VS2015开始,即使我选择“不调试启动”,它也可以工作

  3. 函数是RtlQueryProcessDebugInformation,它总是返回0xc0000022,除非我从VS启动它

  4. 该文件是一个 WMI 提供程序 DLL,#2 使用带有 .exe 的解耦模型启动它。使用共享主机模型 wmiprovse.exe 总是不起作用。

【问题讨论】:

  • RtlQueryProcessDebugInformation 似乎没有记录。请注意,即使您得到了可用的答案,也可能会在较新/其他 Windows 版本上出现问题。 FWIW代码0xc0000022是“DEBUG_ACCESS_DENIED”,所以你有一些权限问题。

标签: c++ visual-studio wmi


【解决方案1】:

Visual Studio 会将调试器附加到您的进程,即使它在技术上是发布版本。这就是为什么您可以点击调试器的停止按钮。这不适用于从资源管理器启动 EXE 时。

至于调用未记录的 Windows 函数,好吧,那些会给出未记录的返回值。你还期待什么?你甚至是什么意思“它不起作用”?当函数的行为符合文档说明时,它就可以工作。

【讨论】:

    【解决方案2】:

    感谢您的回复。该功能在 1 天后重新启动后工作。我怀疑这是由于我正在调试 2 个调用 dbghelp.dll 的应用程序。这可能会触发一些错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2021-06-21
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      相关资源
      最近更新 更多