2017-04-10 148 views
0

如果可以以編程方式更改Windows中的默認PDF閱讀器。以編程方式更改默認PDF閱讀器?

例如

如果默認讀者是「福昕」在我的機器,但我需要改變我的默認閱讀器應用程序爲「的Adobe」在C#或JavaScript。 我有許多方面的搜索。但我沒有得到解決方案。

這是可能的。請提出你的答案。

+1

儘管您可能會這樣做,但您可能會通過搞亂設置來惹惱用戶。 – DavidG

+3

默認的程序設置將存儲在計算機註冊表中...這將意味着您的程序將不得不編輯註冊表:) [只是可能有所幫助](https://superuser.com/questions/436939/在哪裏是默認程序關聯存儲在註冊表中) –

+0

我無法清除上面的鏈接。您能否讓我知道是否可以使用註冊表項更改系統的默認PDF閱讀器?如果是這樣,請用代碼解釋。感謝更新。 –

回答

1

如果您的應用程序具有管理員權限,你可以使用類似以下內容:

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文件打開的完整路徑。

+0

此代碼將引發Null異常。 mscorlib.dll中發生未處理的異常類型'System.UnauthorizedAccessException' 其他信息:拒絕訪問註冊表項'HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .pdf \ UserChoice'。 爲什麼會拋出異常? –

+0

我可以打開我的項目作爲管理員模式,然後運行此代碼,但拒絕訪問錯誤引發。請幫我解決 –

+0

由於註冊表值的權限,它會拋出異常。要改變這個,打開註冊表編輯器(windows鍵+ r,鍵入「regedit」,按回車鍵),導航到「HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .pdf \ UserChoice」,轉到編輯菜單 - >權限,點擊「所有應用程序包」並勾選「完全控制」框。你必須在你想讓代碼運行的任何機器上執行此操作。 –

相關問題