下面的例子里, PowerShell修改了注册表键值, 完成了Security loop disable, 和loopbackcheck disable.
#Security loop disable so that you can look at it on the same machine
if(($gchn = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -Name "BackConnectionHostNames" -ea SilentlyContinue) -eq $null){
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -PropertyType MultiString -Value "$url" -Name "BackConnectionHostNames"
}else{
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -Name "BackConnectionHostNames" -Value ($gchn.BackConnectionHostNames+" $url")
}
#disable loobback check
if((Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" -Name "DisableLoopbackCheck" -ea SilentlyContinue) -eq $null){
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" -PropertyType DWORD -Value "1" -Name "DisableLoopbackCheck"
}
实例给大家了,下面分享一些powershell操作注册表的方法吧
访问注册表键值
在PowerShell中,用户可以通过类似于HKCU:(作为HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虚拟驱动器访问注册表键值。
如:Dir Registry::HKEY_LOCAL_MACHINE\Software
通过这种方式用户可以很容易的复制、粘贴注册表内的键值,用户可以通过下面的命令获取已经注册的文件后缀:
dir Registry::HKEY_CLASSES_ROOT\.* -name | Sort-Object
读取注册表键值
在PowerShell中,用户能够以虚拟驱动器的形式来处理注册表的内容
下面的Get-RegidtryValues函数列举存储在一个注册表键值下的所有键值,完整代码如下所示:
1
2
3
|
function Get -RegistryValues ( $key ) { ( Get-Item $key ).GetValueNames() } |
Get-RegistryValues HKLM:\Software\Microsoft\Windows\Currentversion
Get-RegistryValue读取任意注册表键值并返回其内容,完整代码如下所示:
1
2
3
4
|
function Get -RegistryValue ( $key , $value ) { ( Get-ItemProperty $key $value ). $value } Get -RegistryValue ' HKLM:\Software\Microsoft\Windows\Currentversion' ` |
SM_GamesName
写入注册表键值
添加或修改注册表键值在PowerShell中也是很方便的就可以完成的,下面创建名为Set-RegistryValue函数用来操作注册表键值,以下是完整的代码:
1
2
3
4
5
6
7
8
|
function Set -RegistryValue ( $key , $name , $value , $type = "String" ) { if (( Test-Path $key ) -eq $false ) { md $key | Out-Null } Set-ItemProperty $key $name $value -type $type } Set -RegistryValue HKCU:\Software\TestABC myValue Hello Set -RegistryValue HKCU:\Software\TestABC myValue 12 Dword Set -RegistryValue HKCU:\Software\TestABC myValue ` ([Byte[]][Char[]] "Hello" ) Binary |
移除注册表键值
通过Remove-Item删除目标注册表键,函数Remove-RegistryKey的完整代码如下所示:
1
2
3
|
function Remove -RegistryKey ( $key ) { Remove-Item $key -Force } |
通过Remove-ItemProperty函数删除注册表值,完整的代码如下所示:
1
2
3
|
function Remove -RegistryValue ( $key , $value ) { Remove-ItemProperty $key $value } |