Я создал C # COM-объект и пытаюсь создать его экземпляр из VBscript (в Windows Scripting Host).
Сборка собирается правильно и т. Д., И RegAsm утверждает, что она успешно зарегистрирована. Однако всякий раз, когда я пытаюсь создать экземпляр в скрипте .vbs, я получаю:
Ошибка: не удалось создать объект с именем
Код MyProgId.blah: 80040154
Я использую Win7 x64 Ultimate, объект, созданный для .NET 3.5 с VS2010.
Я также попытался скопировать скомпилированную DLL на компьютер с Win Server 2003, и там я получил те же результаты.
справка.
Также, обратите внимание: я могу зарегистрировать, но не создавать экземпляр, любую из наших старых COM-библиотек VB6. (Да, я запускаю скрипт как администратор.)
Обновление
Только для усмешки я создал тестовое приложение, которое использует Type.GetFromProgID()
для поиска и создания объекта:
Type t = Type.GetTypeFromProgID(progId);
if (t == null)
{
Console.WriteLine("Couldn't create object.");
}
else
{
var obj = Activator.CreateInstance(t);
Console.WriteLine("Successfully created Object: Type is [{0}]", obj);
Console.WriteLine("Calling method [{0}]\n\n", methodName);
var result = t.InvokeMember(methodName, BindingFlags.Default | BindingFlags.InvokeMethod, null, obj, null);
Console.WriteLine("Result: {0}", result);
}
Это работает правильно. Однако попытка создать объект из VBscript все равно не удалась.
Argh.
Обновление, 2-е
После запуска SysInternals ProcMon я вижу довольно много запросов реестра, ищущих progID и guid в HKCU\Software\Classes\...
, где нет упоминаний об объекте (когда я смотрю в RegEdit). Есть довольно много NAME NOT FOUND
ошибок.
Я пытался зарегистрироваться в %windir%\microsoft.net\framework\v4...
и framework64
версиях regasm
, но безрезультатно.