将文件扩展与应用程序相关联我编写了一个编辑特定文件类型的程序,我想让用户在启动时将我的应用程序设置为这个文件类型的默认编辑器(因为我不想要安装程序)。我试图通过向HKEY_CLASS_ROOT添加一个键来为我编写一个可重用的方法来关联一个文件(最好是在任何操作系统上,尽管我正在运行Vista),并将其用于我的应用程序,但它似乎不起作用。public static void SetAssociation(string Extension, string KeyName, string OpenWith, string FileDescription){
RegistryKey BaseKey;
RegistryKey OpenMethod;
RegistryKey Shell;
RegistryKey CurrentUser;
BaseKey = Registry.ClassesRoot.CreateSubKey(Extension);
BaseKey.SetValue("", KeyName);
OpenMethod = Registry.ClassesRoot.CreateSubKey(KeyName);
OpenMethod.SetValue("", FileDescription);
OpenMethod.CreateSubKey("DefaultIcon").SetValue("", "\"" + OpenWith + "\",0");
Shell = OpenMethod.CreateSubKey("Shell");
Shell.CreateSubKey("edit").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\"" + " \"%1\"");
Shell.CreateSubKey("open").CreateSubKey("command").SetValue("", "\"" + OpenWith + "\"" + " \"%1\"");
BaseKey.Close();
OpenMethod.Close();
Shell.Close();
CurrentUser = Registry.CurrentUser.CreateSubKey(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\"
+ Extension);
CurrentUser = CurrentUser.OpenSubKey("UserChoice", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.Regi
stryRights.FullControl);
CurrentUser.SetValue("Progid", KeyName, RegistryValueKind.String);
CurrentUser.Close();}知道为什么不行吗?一个例子可能是SetAssociation(".ucs", "UCS_Editor_File", Application.ExecutablePath, "UCS File");方法中使用“CurrentUser”的部分,如果我使用Regedit进行同样的操作,它似乎也能工作,但是使用我的应用程序却不能。
3 回答
- 3 回答
- 0 关注
- 516 浏览
添加回答
举报
0/150
提交
取消