2017-04-10 153 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”,转到编辑菜单 - >权限,点击“所有应用程序包”并勾选“完全控制”框。你必须在你想让代码运行的任何机器上执行此操作。 –

相关问题