[英]Update context menu of all file extensions in Windows via powershell takes long time
仅为公司开发自己的应用程序,我们已经开发了用于从共享驱动器安装的脚本。 除了安装本身之外,脚本还应该在特定用户的注册表( HKEY_CURRENT_USER
)中创建/更新值。
这些值是分开的:
HKCU:\\Software\\Classes\\Directory
) HKCU:\\Software\\Classes\\*
) 对于目录文件夹,更新是立即进行的,对于扩展名,更新似乎需要花费一些时间,具体取决于计算机硬件(从40秒到2分钟)。
现在,在注册表中仅为名为*
的文件夹创建“条目”很麻烦。 我有一个要解决的问题( PowerShell:如何在文件/文件夹中创建名为“ *”(星号/星号)的选择器? )。
忽略上面的问题,我们找到了一些解决string path
如何工作的解决方案,但是我不确定代码背后发生了什么,也不知道为什么要花这么长时间。
# Directory
New-Item -Path "HKCU:\Software\classes\Directory" -Name "shell" | Out-Null
# All Files Extension
New-Item -Path "HKCU:\Software\classes\[*]" -Name "shell" | Out-Null
一个想法是[*]
解决方案实际上遍历了所有文件扩展名,但是注册表本身在*
文件夹下显示了此NewItem
,而在特定扩展名下未显示:
关于此的另一种想法是,当我们拥有一个注册表文件( *.reg
)时,通过运行该文件,可立即添加注册表项并解决问题。
问题:
[*]
选择器下添加条目时,实际上发生了什么? 我怀疑发生的是由于通配符, New-Item
调用中的-Path
是递归的。 因此,延迟。
这是解决该问题的方法:
Set-Location -LiteralPath "HKCU:\Software\classes\*"
New-Item -Name "shell"
如果未明确传递给函数, New-Item
-Path
当前位置用作-Path
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.