Реестр HKEY USERS для powershell - PullRequest
       1

Реестр HKEY USERS для powershell

0 голосов
/ 24 сентября 2018

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

$root= "HKLM:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\Deployment\Package\*\*"
$user=Get-ChildItem $root | where {$_.Name -like "*S-1-5*"} |select Name
Write-Host $user

, а затем

$soft=Get-ItemProperty"REGISTRY::HKEY_USERS\$user\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"| where {$_.DisplayName -like "*$program*"} | Select DisplayName, DisplayVersion 
}    
if ($soft)
{
Write-Host "npp query = "$soft""
Write-Host -ForegroundColor green "$program already installed!" 
$array +=  $soft[0]
}

Единственная проблема заключается в том, что я пытаюсь получить номера S-1 ...., которые определяют локальную учетную запись пользователя, но вместо этогоЯ получаю полный путь.

есть предложения?

1 Ответ

0 голосов
/ 24 сентября 2018

Часть требуемого пути хранится в другом свойстве, PSChildName.Вы можете получить его следующим образом:

$root = "HKLM:\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\Deployment\Package\"

$user = (Get-ChildItem $root -Recurse -Include "*S-1-5*").PsChildName

В качестве примечания вы можете преобразовать SID в имя пользователя следующим образом:

$sid = New-Object System.Security.Principal.SecurityIdentifier($user)

$userName = $sid.Translate([System.Security.Principal.NTAccount]).Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...