
我建立了一個新的 Windows 7 SP1 基礎映像。一切都很好,很花花公子。
所以我現在正在安裝標準應用程式
我想要 Quicktime 來管理 .mov 檔案。唯一的問題是 WMP (Windows Media Player) 不會放棄與 .mov 檔案的關聯。
這讓我發瘋......我一直在閱讀有關如何修復文件關聯的線程。
我想透過註冊表、powershell 或 cmdline 來完成此操作。我無法使用 GPO
我嘗試過以下方法:
assoc .mov=QuickTime.mov
ftype QuickTime.mov="%ProgramFiles(x86)\QuickTime\QuickTimePlayer.exe"
Reg add HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\UserChoice" /v Progid /d QuickTime.mov /f
Reg add HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\OpenWithList" /v a /d QuickTimePlayer.exe /f
Reg add "HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\OpenWithList" /v b /d wmplayer.exe /f
Reg add HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\OpenWithList" /v MRUList /d ab /f
Reg add HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\OpenWithProgids" /v Quicktime.mov /t REG_NONE /d 0000 /f
Reg add HKCU\Software\Microsoft\windows\CurrentVersion\Explorere\FileExts\.mov\OpenWithProgids" /v WMP11.AssocFile.MOV /t REG_NONE /d 0000 /f
答案1
首先,「assoc」指令會變更HKEY_CLASSES_ROOT中文件類型的一般關聯。如果您檢查註冊表中的條目,我希望您會看到能夠成功更改它。如果 UserChoice 子項中已經設定了使用者首選項,則這對您沒有幫助,因為它具有優先順序。我懷疑您已經知道這一點,這就是為什麼您嘗試直接更改其他註冊表項的原因。
我注意到的下一個項目是關鍵路徑中的錯誤。您使用的是“Explorere”而不是“Explorer”。這可能意味著當您嘗試更改密鑰時不會收到錯誤訊息。如果您正在建立一個新的未使用的金鑰,那麼它將不會對文件的行為產生影響。
接下來,您似乎在詢問如何更改金鑰,但似乎並不擔心方法(只要是腳本化的),所以我只嘗試了一個:powershell。每次我嘗試寫入 UserChoice 時都會引發安全性異常,但不會引發其他金鑰。問題似乎是該特定註冊表項的存取權限。當我在 powershell 中讀出 acl 時,我可以看到我的帳戶的註冊表存取規則將「SetValue」設為「Deny」。
下列頁很好地描述如何解決此問題並刪除所需的權限。這是在我的 Win7 PC 上執行的結果腳本。我使用 .mov 檔案進行檢查;該腳本成功更改了雙擊該檔案時調用的程式。
$user=<your user account name>
$name = "Software\Microsoft\windows\CurrentVersion\Explorer\FileExts\.mov\UserChoice"
$RegKey ="HKCU:\" + $name
Get-ItemProperty -path $RegKey
get-acl -path $RegKey
$key = [Microsoft.Win32.Registry]::CurrentUser.OpenSubKey($name, [Microsoft.Win32.RegistryKeyPermissionCheck]::ReadWriteSubTree,
[System.Security.AccessControl.RegistryRights]::ChangePermissions)
$acl = $key.GetAccessControl()
$rule=new-object System.Security.AccessControl.RegistryAccessRule ($user, 'SetValue', 'Deny')
$acl.RemoveAccessRule($rule)
$key.SetAccessControl($acl)
get-acl -path $RegKey
Set-ItemProperty -path $RegKey -name Progid -value 'WMP11.AssocFile.MOV' -type String
Get-ItemProperty -path $RegKey
如果還有錯誤,建議您比較一下acl權限。該腳本列印出前後的 acl 以及密鑰的當前內容。
注意 1. 顯示的圖示可能不會更新。雙擊 .mov 檔案進行測試。 2. 如果出現問題,請嘗試驗證您是否可以手動變更該值,並且可以在 regedit 中看到等效的變更。
更新:我以為您想保留用戶特定的設置,但在第二次閱讀您的描述時,我意識到您沒有指定這一點。如果您想要更改所有使用者的關聯,那麼您必須使用一個相對簡單的命令完全刪除 UserChoice 鍵,例如這。那你的「assoc」指令應該可以解決問題。
答案2
嘗試預設程式編輯器。進入文件類型設置,選擇.mov
文件,然後將Open
項目更改為 Quicktime。
然後,您可以將變更儲存為 .reg 檔案以檢查/套用/儲存/部署。