在互联网上进行了大量搜索后没有任何成功,我正在寻求帮助。
问题似乎很简单,但不幸的是我无法解决它。
我想将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应用程序吗?
答案 0 :(得分:1)
我想你想要这个,因为你的程序中有一些Set as default
选项,顺便说一下,我花了最后一小时试图找出它为什么不起作用,这就是我的意思到目前为止已经找到了。
您需要采取的步骤如下:
.custom
扩展名创建一个注册表项。
(期间很重要)代码:
Registry.ClassesRoot.CreateSubKey(".custom").SetValue("", "customfile", Microsoft.Win32.RegistryValueKind.String);`
代码:
Registry.ClassesRoot.CreateSubKey("Customfile\shell\open\command").SetValue("", PATH_TO_YOUR_EXE, Microsoft.Win32.RegistryValueKind.String);
现在已经建立了关联,您的应用将注册作为可以打开该扩展程序的应用之一。
在弄乱了一点之后,我发现为了对已经关联的扩展做更改,你还需要编辑注册表
示例(带.txt ext。)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice
此密钥的ProgId
值实际上包含用户设置的默认应用程序,值为string
。所以你也可以编辑/删除这个注册表。
我希望它有帮助:)!