更改.txt的默认应用程序

时间:2016-11-30 13:33:11

标签: c# registry

在互联网上进行了大量搜索后没有任何成功,我正在寻求帮助。

问题似乎很简单,但不幸的是我无法解决它。

我想将default-application更改为打开.txt文件。例如,我想使用位于C:\Program Files\Windows NT\Accessories\wordpad.exe

的写字板,而不是使用记事本

所以我试图在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids更改注册表但没有成功。

我还找到了一个试图改变组策略的解决方案。此代码如下所示:

string tempFile = Path.GetTempFileName();
string xmlFile = tempFile.Replace(".tmp", ".xml");
File.Move(tempFile, xmlFile);

XDocument document = new XDocument(new XElement("DefaultAssociations",
    new XElement("Association",
        new XAttribute("Identifier", ".txt"),
        new XAttribute("ProgId", "txtFile"),
        new XAttribute("ApplicationName", "Editor"))));
document.Save(xmlFile);

ComputerGroupPolicyObject.SetPolicySetting(@"HKLM\Software\Policies\Microsoft\Windows\System!DefaultAssociationsConfiguration",
    xmlFile, RegistryValueKind.String);

但这也行不通。

我还尝试将命令行与ftype一起使用,但这也无效。

有人可以告诉我如何更改给定文件类型的assoziated应用程序吗?

1 个答案:

答案 0 :(得分:1)

我想你想要这个,因为你的程序中有一些Set as default选项,顺便说一下,我花了最后一小时试图找出它为什么不起作用,这就是我的意思到目前为止已经找到了。

您需要采取的步骤如下:

  • 在ClassesRoot中为.custom扩展名创建一个注册表项。 (期间很重要

代码:

Registry.ClassesRoot.CreateSubKey(".custom").SetValue("", "customfile", Microsoft.Win32.RegistryValueKind.String);`
  • 创建“Customfile”子键和“customfile \ open \ command” 存储应用程序路径所需的子键 打开此文件类型。

代码:

Registry.ClassesRoot.CreateSubKey("Customfile\shell\open\command").SetValue("", PATH_TO_YOUR_EXE, Microsoft.Win32.RegistryValueKind.String);

现在已经建立了关联,您的应用将注册作为可以打开该扩展程序的应用之一。


.txt(或其他已经相关的扩展)

的情况

在弄乱了一点之后,我发现为了对已经关联的扩展做更改,你还需要编辑注册表

示例(带.txt ext。)

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice

此密钥的ProgId值实际上包含用户设置的默认应用程序,值为string。所以你也可以编辑/删除这个注册表。

我希望它有帮助:)!