#com #registry #registration #win32com
#com #реестр #Регистрация #win32com
Вопрос:
У меня есть .NET COM dll с пользовательской процедурой регистрации, поэтому она регистрируется в разделе HKEY_CURRENT_USER Software Classes, в отличие от HKEY_LOCAL_MACHINE. Итак, есть следующие ключи (текущий пользователь является администратором на ПК с Windows 7):
HKEY_CURRENT_USERSoftwareClassesMy.ProgIdCLSID
HKEY_CURRENT_USERSoftwareClassesCLSID{XYZZYZYZYZ-YZYZY-ZYZYZY} etc
Если я создам простой клиент C :
hr = CLSIDFromProgID(OLESTR("My.ProgId"), amp;clsid);
и запустите его без прав доступа (Windows 7), компонент создается успешно.
С другой стороны, если я запускаю с повышением прав вкл, происходит сбой с Invalid class string
.
Я проверил с помощью process monitor, когда он работает, он ищет ключ HKCU Software Classes My.ProgID, и он открывается нормально. При сбое (повышение включено) выполняется поиск HKCR My.ProgID и ошибок с NAME NOT FOUND
. Открытие раздела реестра вручную из classes_root
выполнено успешно, хотя:
HKEY key;
RegOpenKey( HKEY_CLASSES_ROOT, _T( "My.ProgId"), amp;key);
Пожалуйста, помогите! Спасибо
Комментарии:
1. Похоже, это связано с этим msdn.microsoft.com/en-us/library/bb756926.aspx
2. Кто-нибудь знает обходной путь? Есть ли какие-либо другие разделы реестра, которые я должен добавить, чтобы он работал с повышением прав?