gpt4 book ai didi

C# - 文件关联对注册表项 'HKEY_CLASSES_ROOT\' 的访问被拒绝

转载 作者:太空狗 更新时间:2023-10-29 22:05:23 24 4
gpt4 key购买 nike

我目前有一个使用注册表设置文件关联的程序(注意,它是 .NET 2.0,所以我必须通过注册表方法)。问题是,由于它正在尝试写入 HKCR,因此可能会遇到管理问题(在其他机器上)。是否有更通用的方法来设置文件关联(对于 .NET 2.0),例如使用 HKCU 或其他一些不需要管理权限的方法。

string keyName = "Class";
string keyValue = "Class File";
string apppath = Application.ExecutablePath.ToLower() + " \"%1\"";
RegistryKey key;
key = Registry.ClassesRoot.CreateSubKey(keyName);
key.SetValue("", keyValue);

RegistryKey iconkey;
key = Registry.ClassesRoot.CreateSubKey(keyName);
iconkey = key.CreateSubKey("DefaultIcon");
iconkey.SetValue("", Environment.CurrentDirectory + "\\resources\\musicfile.ico");

key = key.CreateSubKey("shell");
key = key.CreateSubKey("open");
key = key.CreateSubKey("command");
key.SetValue("", apppath);

最佳答案

HKEY_CLASSES_ROOT 是另外两个位置的别名,合并:

  • HKEY_CURRENT_USER\Software\Classes
  • HKEY_LOCAL_MACHINE\Software\Classes

您必须决定注册文件的原因。文件注册应该适用于所有用户吗?如果是这样,您想要注册与 HKEY_CLASSES_ROOT 的关联(这将隐式地将其写入 HKEY_LOCAL_MACHINE

或者注册仅适用于当前用户?如果是这样,请在 HKEY_CURRENT_USER 中注册您的文件。

请记住,一个用户安装了您的程序并不意味着所有用户都想拥有它;所以请考虑该程序的用途。

无论哪种方式,注册文件关联的正确时间是在使用 MSI 安装程序进行安装期间。 MSI 安装程序知道如何在安装期间请求提升 - 如果需要的话。并非所有软件都必须进入 Program Files,有些软件可以进入 %APPDATA%(即 Chrome),无需管理员权限即可安装 - 并且仅针对一个用户。

关于C# - 文件关联对注册表项 'HKEY_CLASSES_ROOT\' 的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com