如何解决有什么办法以编程方式设置“ UserChoice”注册表项来接管文件类型关联?
| 我一直在尝试找到一种方法来更改默认文件关联 Windows 7中特定的文件扩展名。我有一个用于查看.tif的应用程序 我要提示用户的文件,如果它不是该文件的默认查看器 类型。如果他们选择将其设置为默认值,则我想覆盖当前值 默认查看器。如果没有其他查看器安装在 系统。当用户选择了另一个查看器时,我 无法更改用于控制此处的注册表项: HKCU \\软件\\ Microsoft \\ Windows \\ CurrentVersion \\ Explorer \\ FileExts \\。tif \\ UserChoice 我在网上搜寻了一些人,但都没有人这样做 似乎有任何答案。当我尝试在其中更新\“ Progid \”值时 密钥,我得到一个“无法写入注册表项”或“请求的注册表访问权限是 错误代码。代码很简单:var path = @\"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.tif\\UserChoice\";
var key = Registry.CurrentUser.OpenSubKey(path,true);
key.SetValue(\"Progid\",\"myprogid...\");
该密钥上有一些特殊的保护措施可以防止它被盗用吗?
以编程方式进行编辑?
解决方法
为了能够写入密钥UserChoice,您需要在写入密钥之前先拥有密钥的所有权(例如此代码-不在c#(C ++)中,但我认为可以用相同的方式完成)。
您将能够写入密钥,并且文件关联代码将起作用!
编辑:另请参见MSDN上的注册表项安全性和访问权限
, 似乎无法更改,但您可以删除
UserChoice
。
, 该链接可能为您提供了更多信息:如何使用C#和以下注册表项所有权:RegOpenKeyEx和RegSetKeySecurity?
, 如果您还没有找到解决方法,请尝试使用assoc和ftype命令行工具。但是请注意,您将需要使用管理特权来运行它们。
创建一个使用Assoc
和Ftype
设置文件关联的批处理脚本。
使用System.Diagnostics.Process执行批处理脚本。
基本上,您必须使用以下几行来创建.bat(或.cmd)文件:
ASSOC .txt=TXTFileWordPad
FTYPE TXTFileWordPad=\"%ProgramFiles%\\Windows NT\\Accessories\\wordpad.exe\" %%1
有关如何使用这些工具的更多信息,请参见:从命令行管理文件Assoc和Ftype。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。