Я пытаюсь настроить доступ, запускать разрешения и задавать запуск для одного из наших пользовательских приложений DCOM.
Я уже прошел эти ссылки
Функциональность dcomcnfg программно
а также http://www.myitforum.com/articles/11/view.asp?id=9323 (скачанная библиотека c ++ DCOMPerm)
Я попробовал код из первой ссылки выше, как написано «Longofest» но следующая строка кода
var value = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Ole", "DefaultAccessPermission", null);
всегда возвращает мне нулевое значение, однако, когда я просматривал записи реестра на моем компьютере, запись «DefaultAccessPermission» для раздела реестра Ole имеет двоичное значение, поэтому я всегда получаю нулевое значение, не знаю.
Во-вторых, я попробовал библиотеку c ++, загруженную по второй ссылке выше, и попытался сделать COM-вызов одного из методов с атрибуцией DLLImport (для автоматизации разрешений на запуск для объекта DCOM), но некоторые проблемы с маршалингом не позволяют мне пройти в C # типы, соответствующие типам C ++ и выдающие исключение, которое говорит, что PInvoke не может возвращать варианты.
Я не мог найти ничего конкретного после поиска в Google в течение нескольких часов, любая помощь на этот счет будет более чем признательна.
Никогда не работал с C ++, плохо знал этот язык.
Обновить: Проблема с нулевым значением решена, но я не знаю, как установить права доступа и установить запуск от имени. Я видел в коде c ++, что для установки прав доступа коду нужны домен и имя пользователя, но что это за эквивалент C #, не знаю …
Я использовал инструмент tblimp.exe от Microsoft и создал сборку взаимодействия .dll из DComPerm.dll (сборка c ++) для ссылки в коде C #, и с помощью Run Time Callable Wrapper я вызываю различные методы на COM-объектах, чтобы написать свой Программа на C #, поэтому не нужно указывать атрибуты DLLImport или MarshalAs, поскольку RCW позаботится обо всех проблемах, связанных с сортировкой и сортировкой.