2015-07-30 1 views
0

Я пытаюсь настроить права доступа, разрешения запуска и установить запуск в качестве одного из наших пользовательских приложений DCOM.Как настроить доступ DCOM, запустить и установить запуск как разрешение с помощью C#

Я уже прошли через эти ссылки dcomcnfg functionality programmatically

и http://www.myitforum.com/articles/11/view.asp?id=9323 (скачано с ++ DCOMPerm библиотека)

Я попробовал код из первой ссылке выше, как написано «longofest» но следующий строка кода

var value = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Ole", "DefaultAccessPermission", null); 

всегда возвращает мне нулевое значение, однако, когда я просматривал записи реестра на m y, запись «DefaultAccessPermission» для ключа реестра Ole имеет там двоичное значение, то почему я всегда получаю нулевую обратную ссылку, не знаю.

Во-вторых, я попробовал библиотеку C++, загруженную со второй ссылки выше, и попытался выполнить вызов COM одному из методов с атрибуцией DLLImport (для автоматизации разрешений запуска для объекта DCOM), но некоторые проблемы с сортировкой не позволяют мне передать типы C#, соответствующие типам C++, и выплевывать исключение, которое говорит, что PInvoke не может возвращать варианты.

Я не мог найти ничего конкретного после поиска в Интернете в течение нескольких часов, любая помощь по этому счету будет более чем оценена.

Никогда не работал с C++, получил очень плохое знание этого языка.

Обновление: Проблема с нулевым значением решена, но я не знаю, как установить права доступа и установить run as. Я видел в коде C++, что для установки разрешения доступа код нуждается в домене и имени пользователя, но что эквивалентно этому C#, не знаю ....

+0

Ваш код работает как 32- или 64-разрядный процесс? [Это] (http://stackoverflow.com/a/974093/115272) может вам помочь. –

+0

Я выбрал любой процессор на вкладке сборки свойств проекта, и он находится на 64-битной машине Windows 7. – user2913184

ответ

0

Я использовал инструмент tblimp.exe от Microsoft и создал interop .dll из DComPerm.dll (сборка C++) для ссылки в C# -кодеке и посредством Run Time Callable Wrapper. Я вызываю различные методы на COM-объектах для записи своей C# -программы, поэтому нет необходимости в атрибуции DLLImport или MarshalAs с RCW будет заботиться обо всех маршаллинговых и необратимых проблемах.

Смежные вопросы