我目前有一个使用注册表设置文件关联的程序(注意,它是.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)无需管理员权限即可安装 - 并且仅为一位用户安装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)