繁体   English   中英

通过Powershell更新Windows中所有文件扩展名的上下文菜单需要花费很长时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM