可以在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中运行(要求它提示提升权限是可以的(,有什么想法吗?
也许是在黑暗中拍摄的,但你读过这篇代码项目文章吗:http://www.codeproject.com/KB/vista-security/ElevatedPrivilegesDemand.aspx
需要考虑的几点:
- 使用早期绑定而不是反射、调用方法
- 检查是否有其他代码需要"以管理员身份运行"权限
- 请改用.NET
SendStringToExecute()
- 检查您试图调用的命令是否具有一定的安全性关注