有没有办法以编程方式设置"UserChoice"注册表项来接管文件类型关联?

Jas*_*son 10 c# security registry default file-type

我一直在尝试找到一种方法来更改Windows 7中特定文件扩展名的默认文件关联.我有一个应用程序,用于查看.tif文件,如果它不是默认查看器,我想提示用户文件类型.如果他们选择将其设为默认值,我想覆盖当前的默认查看器.如果系统上没有安装其他查看器,则此方法可以正常工作.当用户选择了另一个查看器时,我无法更改控制此处的注册表项:

HKCU\Software\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...");
Run Code Online (Sandbox Code Playgroud)

是否对此密钥有一些特殊保护,以防止以编程方式编辑它?

小智 -1

看起来无法更改,但可以删除UserChoice