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