Categories: Windows

Не устанавливается клиент SCCM 2012 R2. Эпизод 2

Не устанавливается клиент с ошибкой в логе ccmsetup.log: «MSI: Could not open key: UNKNOWN\Components\7AF388D3061FB2A46ABD37138B8E660C\19BF4688EE4961F41A44D0282A2340D9. Verify that you have sufficient access to that key, or contact your support personnel.»

Сразу нашёл, что необходимо дать полные права группе администраторов на следующий раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\7AF388D3061FB2A46ABD37138B8E660C\19BF4688EE4961F41A44D0282A2340D9. Оказалось, что разделов в реестре, на которые надо дать права куева хуча, поэтому пришлось придумывать метод для автоматического изменения разрешений. Для того, чтобы изменить разрешения на раздел реестра очень удобно использовать regini.exe. Но для использоания regini.exe необходимо было получить список разделов, в которых хранится информация именно о компонентах клиента SCCM. Для этого я мной был использован срипт Powershell:

	$data = Get-ChildItem -path `

registry::'hklm\software\microsoft\windows\currentversion\installer\userdata\s-1-5-18\components' `
-Recurse | Where-Object -FilterScript {$_.Name -like '*\19BF4688EE4961F41A44D0282A2340D9' }
	foreach( $d in $data ) {
		#Сохранить список для последующего сравнения
		$d.Name >> hive.txt
	}

При выполнении этого скрипта на проблемном компьютере, оказалось, что не хватало разрешений, чтобы получить список этих разделов. Пришлось запустить этот скрипт на здоровом компьютере. Был получен список разделов, которые создает клиент SCCM. Этот список перенесен на проблемный компьютер. По этому списку следующий скрипт Powershell проверил наличие или отсутствие разделов, и на присутствующие разделы установил нового владельца – группу локальных администраторов и одновременно формируется файл для работы программы regini.exe. Кстати, для задания нового владельца использована программа SetACL.exe.

	$data = get-content E:\temp\1.txt
	foreach( $str in $data ) {
		if( get-item registry::$str ) {
			SetACL.exe -on "$str" -ot reg -actn setowner -ownr n:Administrators
			#Сохранить список для использования в regini.exe
			$str = $d.Name -replace "HKEY_LOCAL_MACHINE", "\registry\machine"
			"$str [1 8]" >> regini.txt
		}
	}

После этого необходимо выполнить команду

	regini.exe regini.txt

Saqwel

Share
Published by
Saqwel

Recent Posts

Azure App Configuration and access to Key Vault references

We decided to use an Azure App Configuration to store configs of backend. App Configuration…

2023-08-24

Azure cli az acr login hangs

I have encountered an issue with az acr login --name <acr_name> command. It hanged and…

2023-08-23

Error: Unable to read Docker image into resource: unable to find or pull image nginx:latest

I have tried to learn terraform from scratch and found pretty simple tutorial for beginners.…

2022-09-09

Скрыть поле модели от Swagger (Hide field of model from Swagger)

При внедрении Swagger в проекте .Net Core Web API потребовалось скрыть одно поле из примера,…

2020-04-24

Прогноз цен на акции

Около года назад я решил попробовать заработать на фондовой бирже, покупая и продавая акции. Изучая…

2019-07-20

Installation failed with error code: (0x00000490), “Element not found. “

Во время установки .NET Framework столкнулся с ошибкой Installation failed with error code: (0x00000490), "Element…

2018-12-20