c# - 是否可以提高 IE .NET 附加组件的安全性?

标签 c# .net security internet-explorer

我有一个 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 中运行(要求它提示提升权限是可以的)有什么想法吗?

最佳答案

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

关于c# - 是否可以提高 IE .NET 附加组件的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956275/

相关文章:

c# - 在 .NET 中将域名转换为 LDAP 样式

c# - 跨线程操作问题

c# - 使用 BindingNavigator 删除列表项,而不是正确的项

html - 禁用 Safari 自动填充用户名和密码

c# - 我应该将 Main 方法放在使用 "Host.CreateDefaultBuilder(args).Build();"的控制台应用程序的什么位置?

c# - 在 C# 中从字符串创建匿名方法

c# - 无法从完整的 .NET 项目中引用 .NET Core 类库

c# - 查询附加实体

java - ZooKeeper 摘要式身份验证 - 安全替代方案?

security - 什么是Android点密码系统的熵?