可以在IE.NET加载项中提升安全性

本文关键字:安全性 加载项 NET IE | 更新日期: 2023-09-27 18:12:57

我有一个C#/.NET(VS2010(IE插件,它将Marshal.GetActiveObject()用于正在运行的应用程序实例(COM对象(,然后通过Invoke()方法向其发送命令。在XP中,它运行良好。在W7/Vista中,它要求IE和目标应用程序都是"以管理员身份运行",否则会生成异常:

[Operation unavailable (Exception from HRESULT:0x8000401E3 MK_E_UNAVAILABLE))]

这是代码:

private void _BtnPlace_onclick(IHTMLEventObje)
{
    ....
    ....
    object AutoCADApp = null;
    try
    {
        // Does not return the object from the Running Objects Table unless run 'As Administrator'
        AutoCADApp = System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application");
    }  
    catch (Exception ex)
    {
        MessageBox.Show("Unable to locate a running version of AutoCAD on this machine. Please make sure AutoCAD is running.'n'n [" + ex.Message + "]'n", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        return;
     } 
    object acadDoc = GetProperty(AutoCADApp, "ActiveDocument");
    InvokeMethod(acadDoc, "SendCommand", keyin);
}

关于如何解决安全问题以使此插件在W7/Vista中运行(要求它提示提升权限是可以的(,有什么想法吗?

可以在IE.NET加载项中提升安全性

也许是在黑暗中拍摄的,但你读过这篇代码项目文章吗:http://www.codeproject.com/KB/vista-security/ElevatedPrivilegesDemand.aspx

需要考虑的几点:

  1. 使用早期绑定而不是反射、调用方法
  2. 检查是否有其他代码需要"以管理员身份运行"权限
  3. 请改用.NET SendStringToExecute()
  4. 检查您试图调用的命令是否具有一定的安全性关注