![](/img/trans.png)
[英]How to read HKCU Registry key of another user in admin on powershell?
[英]How to change specific registry setting for another user in powershell
目標:
在powershell中編輯特定用戶的特定注冊表項設置,而不是其他用戶。
已知:
操作系統:Windows 8.1 Embedded Industry Pro(與Win 8.1相同,但具有一些嵌入式功能)
我可以在目標機器上手動執行此操作,方法是打開REGEDIT,選擇HKU,然后單擊File Menu,單擊Load Hive,導航到用戶的配置文件目錄,例如:c:\\ users \\ MrEd,當出現提示時,輸入'ntuser .dat' - 導入HKEY_CURRENT_USER。 Hive將加載到HKU,您可以在其中導航並進行必要的修改。
摘要:
我有一個powershell腳本,它返回特定用戶的SID,但是當在注冊表配置單元的上下文中使用時,“找不到”配置單元 - 所以我猜我一定錯過了一步? 如何從Powershell“加載蜂巢”? 或者我在某個地方錯過了一個特殊的,神奇的,山羊 - 內臟 - 鍵盤咒語?
Param(
[string]$user= $null
)
Function GetSIDfromAcctName()
{
Param(
[Parameter(mandatory=$true)]$userName
)
$myacct = Get-WmiObject Win32_UserAccount -filter "Name='$userName'"
return $myacct.sid
}
if($user)
{
$sid = GetSIDfromAcctName $user
New-PSDrive HKU Registry HKEY_USERS
$myHiveEntry = Get-Item "HKU:\${sid}"
Write-Host "Key:[$myHiveEntry]"
}
您的現有代碼應該適用於已經加載了配置單元的用戶(如當前登錄的用戶),但它不會嘗試加載配置單元。
我不知道如何通過編程方式調用來加載配置單元,但是你可以將其發送到reg.exe
。
這最終變得有點笨拙。 如果它在任何地方都在使用,它似乎有卸載蜂巢的問題,所以我在這個樣本中放了一堆垃圾來試圖擺脫可能讓它打開的東西,但在我的測試中,它可能需要在reg unload
命令成功之前很長一段時間,因此finally塊中的整個重試部分。
這是超級未經修飾的,我只是當場鞭打它。
Function GetSIDfromAcctName()
{
Param(
[Parameter(mandatory=$true)]$userName
)
$myacct = Get-WmiObject Win32_UserAccount -filter "Name='$userName'"
return $myacct.sid
}
$user = 'someuser'
$sid = GetSIDfromAcctName -userName $user
$path = Resolve-Path "$env:USERPROFILE\..\$user\NTUSER.DAT"
try {
reg load "HKU\$sid" $path
#New-PSDrive -Name HKUser -PSProvider Registry -Root "HKEY_USERS\$sid"
#Get-ChildItem HKUser:\
Get-ChildItem Registry::\HKEY_USERS\$sid
} finally {
#Remove-PSDrive -Name HKUser
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
$retryCount = 0
$retryLimit = 20
$retryTime = 1 #seconds
reg unload "HKU\$sid" #> $null
while ($LASTEXITCODE -ne 0 -and $retryCount -lt $retryLimit) {
Write-Verbose "Error unloading 'HKU\$sid', waiting and trying again." -Verbose
Start-Sleep -Seconds $retryTime
$retryCount++
reg unload "HKU\$sid"
}
}
這不是使用PS驅動器,但該代碼也在那里,注釋掉了。
請注意,如果沒有使用SID命名hive掛載點,則根本不需要SID,因為無論如何都使用用戶名來查找NTUSER.DAT
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.