如果可以以编程方式更改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阅读器?如果是这样,请用代码解释。感谢更新。 –