如果可以以編程方式更改Windows中的默認PDF閱讀器。以編程方式更改默認PDF閱讀器?
例如,
如果默認讀者是「福昕」在我的機器,但我需要改變我的默認閱讀器應用程序爲「的Adobe」在C#或JavaScript。 我有許多方面的搜索。但我沒有得到解決方案。
這是可能的。請提出你的答案。
如果可以以編程方式更改Windows中的默認PDF閱讀器。以編程方式更改默認PDF閱讀器?
例如,
如果默認讀者是「福昕」在我的機器,但我需要改變我的默認閱讀器應用程序爲「的Adobe」在C#或JavaScript。 我有許多方面的搜索。但我沒有得到解決方案。
這是可能的。請提出你的答案。
如果您的應用程序具有管理員權限,你可以使用類似以下內容:
public enum Readers
{
AdobeReader = 0,
FoxitReader = 1
}
Dictionary<int, string> _PDFReaders = new Dictionary<int, string>()
{
{ 0,"AcroExch.Document.DC" },
{ 1, "FoxitReader.Document" }
};
public void SetPDFDefault(Readers program)
{
string nVal = _PDFReaders[(int)program];
Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice",
"ProgId", nVal,RegistryValueKind.String);
}
然後你可以使用SetPDFDefault(Readers.AdobeReader);
更改默認。
編輯:
您可能需要更改權限上的註冊表值 - 要做到這一點運行regedit,定位到 「HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Explorer中\ FileExts.pdf \ UserChoice」按編輯 - >權限,並將所有應用程序包更改爲「完全控制」。
美中不足的是:
隨着Windows的10,你可以這樣做時收到通知「的應用造成使用默認設置應用爲.pdf文件有問題,所以它被重置爲微軟邊緣」。這是微軟試圖阻止應用程序像這樣以編程方式修改默認值。
的解決辦法是在這裏:http://www.winhelponline.com/blog/windows-10-resetting-file-associations/
從該網頁下載的REG文件與註冊表首先合併它 - 它可以防止重置默認微軟的應用程序。 (在進行大的更改之前備份註冊表!!)
請注意,這很不方便,只是將用戶指向默認程序對話框可能會好得多。
要代替做到這一點:
public void ShowDefaultDialog(string path)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "rundll32.exe";
proc.StartInfo.Arguments = "shell32,OpenAs_RunDLL " + path;
proc.Start();
}
其中「路徑」是一個PDF文件打開的完整路徑。
此代碼將引發Null異常。 mscorlib.dll中發生未處理的異常類型'System.UnauthorizedAccessException' 其他信息:拒絕訪問註冊表項'HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .pdf \ UserChoice'。 爲什麼會拋出異常? –
我可以打開我的項目作爲管理員模式,然後運行此代碼,但拒絕訪問錯誤引發。請幫我解決 –
由於註冊表值的權限,它會拋出異常。要改變這個,打開註冊表編輯器(windows鍵+ r,鍵入「regedit」,按回車鍵),導航到「HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .pdf \ UserChoice」,轉到編輯菜單 - >權限,點擊「所有應用程序包」並勾選「完全控制」框。你必須在你想讓代碼運行的任何機器上執行此操作。 –
儘管您可能會這樣做,但您可能會通過搞亂設置來惹惱用戶。 – DavidG
默認的程序設置將存儲在計算機註冊表中...這將意味着您的程序將不得不編輯註冊表:) [只是可能有所幫助](https://superuser.com/questions/436939/在哪裏是默認程序關聯存儲在註冊表中) –
我無法清除上面的鏈接。您能否讓我知道是否可以使用註冊表項更改系統的默認PDF閱讀器?如果是這樣,請用代碼解釋。感謝更新。 –