Зарегистрируйте COM, который в основном regsvr32.exe, но мне нужно написать собственный код для регистрации quartz.dll.Поэтому я написал следующий код:
typedef HRESULT(WINAPI *FREG)();
BOOL Register()
{
CoInitialize(NULL);
HMODULE hMod = ::LoadLibrary(L"C:/windows/sysWow64/quartz.dll");
if (!hMod)
return FALSE;
HRESULT hResult = ::OleInitialize(NULL);
if (hResult != S_OK)
{
::FreeLibrary(hMod);
return FALSE;
}
FREG lpfunc = (FREG)::GetProcAddress(hMod, "DllRegisterServer");
if (!lpfunc)
{
::FreeLibrary(hMod);
::OleUninitialize();
return FALSE;
}
hResult = lpfunc();
::OleUninitialize();
::FreeLibrary(hMod);
return (hResult == S_OK);
}
, но lpfunc () получил E_ACCESSDENIED Ошибка общего доступа запрещена.Я включил UAC для requireAdministrator ,, но ничего не изменилось.
Интересно, что приведенный выше код хорошо работает в консольной программе, и в MFC все еще возникают проблемы с разрешениями. Я нашел много информации, но проблема не быларешено.