windows - 通过 PowerShell 使用路径组件创建注册表项

标签 windows powershell registry powershell-remoting

对于遗留应用程序,我需要创建一个注册表项,其名称格式为 c:/foo/bar/baz。 (注意:正斜杠,而不是反斜杠。)要清楚:这是一个键的名称,带有正斜杠,否则看起来像 Windows 路径。因为我需要针对大量服务器编写脚本,PowerShell 似乎是一个不错的选择。

问题是我不知道如何通过 PowerShell 创建该格式的 key 。 New-Item -Path HKLM:\SOFTWARE\Some\Key -Name 'c:/foo/bar/baz' 出现错误,PowerShell 认为我正在使用 / 作为路径分隔符并且找不到路径 HKLM:\Software\Some\Key\c:\foo\bar,它确实不存在(也不应该存在)。我找不到任何其他方法来(ab)使用 New-Item 来获得我想要的东西。

我是否遗漏了什么,或者我应该放弃并仅以老式方式生成和加载注册表转储?

最佳答案

你需要做两件事。首先你需要得到一个可写的RegistryKey对象,否则你无论如何也不能修改任何东西。其次,直接在 RegistryKey 对象上使用 CreateSubKey 方法。

$writable = $true
$key = (get-item HKLM:\).OpenSubKey("SOFTWARE", $writable).CreateSubKey("C:/test")
$key.SetValue("Item 1", "Value 1")

创建键后,您可以使用生成的对象为其添加值。

关于windows - 通过 PowerShell 使用路径组件创建注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149175/

相关文章:

C++:我应该捕获所有异常还是让程序崩溃?

c++ - 从一个目录中读取许多小文件会有多大问题?

string - 拆分文件名 - 奇怪的行为

python - 有没有更好的方法利用 redshift、python 和 powershell 来自动化我的报告?

java - 如何使用 JNA winreg 写入 Windows 注册表?

powershell - 区分注册表项和值路径

windows - 使用 Makefile 创建 DLL 以在 Windows XP(32 位)和 Windows 7(64 位)上运行

c++ - 如何使用 C++ 读取 Windows BSOD 生成的 memory.dmp

windows - 使用 PowerShell 检查内存类型(是否 ECC)

c++ - 在 64 位和 32 位窗口中读取注册表