Безопасность COM на Windows Server 2008 - PullRequest
0 голосов
/ 20 августа 2010

У меня есть библиотека .NET, которую я регистрирую для взаимодействия COM. На моем компьютере все работает нормально (windows 7 x64) - я регистрирую библиотеку, используя regasm , и VBScript может нормально запускать CreateObject. Я отменяю регистрацию, и CreateObject терпит неудачу. Как и следовало ожидать.

Однако, когда я помещаю эту точно такую ​​же библиотеку на свой сервер (Windows Server 2008 x64) и запускаю regasm (который говорит, что библиотека была зарегистрирована правильно), я не могу заставить CreateObject VBScript действительно работать. Я получаю сообщение об ошибке

800A01AD (компонент ActiveX не может создать объект)

, что является точной ошибкой, с которой я сталкиваюсь в своем локальном ящике при отмене регистрации библиотеки в COM.

Единственное, что я могу придумать, это то, что это вопрос безопасности. Что мне нужно для проверки безопасности vi в COM?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Существует две версии Regasm.exe на компьютере x64.Похоже, вы использовали 32-разрядную версию, она добавляет только ключи реестра в 32-разрядное представление реестра (HKLM \ Software \ Wow6432Node).Чтобы заставить его работать для кода, который работает в 64-битном режиме, вам нужно также зарегистрировать его для 64-битного кода.И, конечно, ваш компонент .NET не должен иметь никаких зависимостей от 32-разрядного неуправляемого кода.

64-разрядная версия находится в каталоге c: \ windows \ microsoft.net \ framework64

илииспользуйте 32-битную версию движка vbscript.

1 голос
/ 20 августа 2010

Можете ли вы показать полную команду, которую используете для регистрации .dll?

согласно статье здесь: http://www.osmstudios.com/Display.asp?Page=asp_emaildll

вы должны запускать следующие команды из командной строки:

regasm <location of file from the root> /tlb:<name of DLL>.dll 

gacutil -i <location of file from the root>
...