Visual studio Visual Studio为不同的操作引发相同的ComException?
背景: 在我的VSPackage中,我有Visual studio Visual Studio为不同的操作引发相同的ComException?,visual-studio,com,envdte,vsix,vspackage,Visual Studio,Com,Envdte,Vsix,Vspackage,背景: 在我的VSPackage中,我有process.Attach()指令。我还将UAC(用户帐户控制设置)设置为默认级别: 用例: 当我以管理员权限运行示例应用程序时: 然后使用Visual Studio中的我的VSPackage以较低的当前用户权限(非管理员)连接到该进程,我得到以下COMException: 这是正确的,我想,并表明我没有授权执行这种附加操作 当我以当前用户身份运行示例应用程序时: 然后附加到它–一切都按预期工作(调试器已附加)。然后,如果在Visual Stud
process.Attach()
指令。我还将UAC(用户帐户控制设置)设置为默认级别:
用例:
COMException
:
这是正确的,我想,并表明我没有授权执行这种附加操作COMException
:
HRESULT与以前相同如您所见,这两个不同操作的HRESULT是相同的。为什么?如何区分在第二种情况下我试图附加到调试器已附加到的进程(与第一种情况不同-附加到我们没有权限的进程)?HRESULT是COM的弱点,错误代码不能很好地扩展。至少部分原因是Java吃了微软的午餐 错误代码并不意味着“无法附加调试器”,也没有任何空间来明确解释为什么无法附加调试器。没有类似的,比如说,一个。所以你只是得到了一个不能做的诊断,而不是一个为什么不能做的诊断。这是最好的,因为它将得到,也许有一天他们会实现IErrorInfo,所以你至少会得到一个文本描述。更有可能的是,VisualStudio扩展模型将首先进行一次大的检修。这是风吹的方式,加载项在VS2013中被弃用