电源外壳:
$paths = @( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%SystemRoot%/System32/drivers/3ware.sys"
)
foreach($path in $paths)
{
cmd.exe /c "C:\SetACL.exe -on ""$path"" -ot reg -actn setowner -ownr ""n:%username%"" -rec Yes" | Out-Null
cmd.exe /c "C:\SetACL.exe -on ""$path"" -ot reg -actn ace -ace ""n:%username%;p:full"" -rec Yes" | Out-Null
}
有关 SetACL.exe 文件的信息可以在此处找到。 https://helgeklein.com/setacl/
这是一个键,而不是一个值。
%SystemRoot%/System32/drivers/3ware.sys
有一个百分号和斜线。
有这样一个注册表项,但是由于 <,我得到了这个项未找到错误%> 和 </> 我提到的迹象。
我已经搜索并尝试过如何正确地编写它们,但没有成功。
我尝试过的事情:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%/System32/drivers/3ware.sys
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%%SystemRoot%%//System32//drivers//3ware.sys
答案1
您使用了 cmd.exe,它正在%SystemRoot%
将可能扩展回C:\WINDOWS
。避免使用 CMD.EXE 并直接从 Powershell 调用 - 您也需要交换%USERNAME%
。类似这样的操作,替换 %
并双重转义"
:
$paths = @( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%SystemRoot%/System32/drivers/3ware.sys"
)
foreach($path in $paths)
{
C:\SetACL.exe -on "$path" -ot reg -actn setowner -ownr "n:$env:USERNAME" -rec Yes
C:\SetACL.exe -on "$path" -ot reg -actn ace -ace "n:$env:USERNAME;p:full" -rec Yes
}
请注意,我无法测试上述内容,因此如果没有帮助,我将删除此答案。