sgi*_*ons 6 .net registry permissions powershell
我正在尝试使用powershell来访问远程注册表,如下所示:
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine", $server)
$key = $reg.OpenSubkey($subkeyPath)
Run Code Online (Sandbox Code Playgroud)
根据我无法确定的某些因素,我得到了
使用"1"参数调用"OpenSubKey"的异常:"不允许请求的注册表访问."
要么
System.UnauthorizedAccessException:尝试执行未经授权的操作.Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode,String str)at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey,String machineName)
很明显,这是因为我正在运行powershell脚本的用户没有相应的凭据来访问远程注册表.我希望能够提供一组用于远程注册表访问的凭据,但我无法找到任何方法来执行此操作.我也不清楚确切地指定哪些用户可以远程访问注册表.
小智 6
只是想我也将我的答案添加到有此问题的任何人。似乎没有办法使用RemoteRegistry添加凭据。但是,您可以使用WMI通过备用凭据查询远程注册表,如下所示:
$reg = Get-WmiObject -List -Namespace root\default -ComputerName RemotePC -Credential "Domain\User" | Where-Object {$_.Name -eq "StdRegProv"}
Run Code Online (Sandbox Code Playgroud)
从这里您可以调用标准注册表方法。以下示例将返回操作系统。
$HKLM = 2147483650
$reg.GetStringValue($HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName").sValue
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助某人:)
小智 0
来寻找您问题的答案,但今天早上在谷歌上搜索了一下,我注意到第一个参数是类型而不是字符串...希望这有帮助:
$machine = "<Machine Name Goes Here>"
$type = [Microsoft.Win32.RegistryHive]::LocalMachine
$regkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type,$machine)
$subkey = $regKey.OpenSubKey($key)
foreach ($sub in $regKey.GetSubKeyNames()){$sub}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22345 次 |
| 最近记录: |