2

Я устанавливаю программу на сервер и удаляю программу с отдельного компьютера.

Сервер: Windows Server 2008 R2 Компьютер: Windows 7 Ultimate

Я нашел установщик и деинсталлятор в той же точке. Эти 2 компьютера находятся в домене с параметрами принудительной настройки групповой политики.

При установке программы они останавливаются на

"C:\Lumesnion\admin\smc.exe" /regserver

В журнале установки. Они останавливаются на

"C:\Lumesnion\admin\smc" /unregserer

В журнале удаления.

Это проблема с редактором реестра, заблокированным? Я не могу получить никакой информации о том, почему они застряли там. Я включил редактирование реестра через regedit, и они все еще зависают.

Может кто-нибудь сказать мне, что на самом деле делают /regserver и /unregserver и как я могу это исправить, чтобы программа действительно успешно установилась?

РЕДАКТИРОВАТЬ 1: Забыл добавить, что я администратор домена и локальный администратор на машине. Я устанавливаю программу с помощью "Запуск от имени администратора".

РЕДАКТИРОВАТЬ 2: Установка Lumension Device Control.

РЕДАКТИРОВАТЬ 3: Только что сделал тест и запустил установщик с помощью Process Monitor, и он показывает "FAST IO DISALLOWED" в папке, где должен быть установлен smc.exe. Все еще занимаюсь исследованиями и задаюсь вопросом, имеет ли это какое-либо отношение к проблеме. Насколько я понимаю, /regserver используется для регистрации значений DCOM, но быстрый ввод-вывод - это то, что регистрирует. Если я не понял правильно. Я ошибся?

1 ответ1

3

Может кто-нибудь сказать мне, что на самом деле делают /regserver и /unregserver?

Самостоятельная регистрация:

Помимо вопросов лицензирования, которые обрабатываются с помощью IClassFactory2, процедура установки обычно создает необходимые записи реестра для компонента для правильной работы в контексте COM и OLE.

Дополнительно:

Наличие этих данных позволяет любой заинтересованной стороне, например, приложению, желающему интегрировать этот новый компонент, определить, поддерживает ли сервер саморегистрацию, без предварительной загрузки DLL или EXE.

Если сервер упакован в модуль DLL, DLL должна экспортировать функции DllRegisterServer и DllUnregisterServer. Любое приложение, которое хочет дать серверу команду зарегистрировать себя (то есть все его CLSID и идентификаторы библиотек типов), может получить указатель на DllRegisterServer через функцию GetProcAddress. В DllRegisterServer DLL создает все необходимые записи реестра, сохраняя правильный путь к DLL для всех записей InprocServer32 или InprocHandler32.

Когда приложение желает удалить компонент из системы, оно должно отменить регистрацию этого компонента, вызвав DllUnregisterServer. В рамках этого вызова сервер удаляет именно те записи, которые он ранее создал в DllRegisterServer. Сервер не должен слепо удалять все записи для своих классов, потому что другое программное обеспечение может хранить дополнительные записи, такие как ключ TreatAs.

Если сервер упакован в модуль EXE, приложение, желающее зарегистрировать сервер, запускает сервер EXE с аргументом командной строки /RegServer или -RegServer (без учета регистра). Если приложение хочет отменить регистрацию сервера, оно запускает EXE с аргументом командной строки /UnregServer или -UnregServer. Самостоятельно регистрируемый EXE обнаруживает эти аргументы командной строки и вызывает те же операции, что и DLL, в DllRegisterServer и DllUnregisterServer соответственно, регистрируя путь к своему модулю в LocalServer32 вместо InprocServer32 или InprocHandler32.

"Это проблема с редактором реестра, заблокированным?"

Скорее всего, это связано с тем, что вы не являетесь администратором домена. Однако на самом деле невозможно ответить без тени сомнения, основываясь на информации, которую вы нам предоставили.

Может кто-нибудь сказать мне, что на самом деле делают /regserver и /unregserver?

Он просто регистрирует приложение, чтобы оно могло общаться с библиотекой COM

Эти 2 машины находятся в домене с настройками групповой политики

.....

При установке программы они останавливаются на

.....

Как я могу это исправить, чтобы программа действительно успешно установилась?

Самое простое решение - установить приложение с правами администратора в активном домене.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .