У меня есть надстройка C # /. NET (VS2010) для IE, которая использует Marshal.GetActiveObject()
для работающего экземпляра приложения (COM-объект), а затем отправляет ему команды с помощью метода Invoke()
.В ХР работает нормально.В 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 (можно запросить у него повышенные привилегии)?