为了账号安全,请及时绑定邮箱和手机立即绑定

将文件扩展与应用程序相关联

将文件扩展与应用程序相关联

当年话下 2019-07-12 10:23:17
将文件扩展与应用程序相关联我编写了一个编辑特定文件类型的程序,我想让用户在启动时将我的应用程序设置为这个文件类型的默认编辑器(因为我不想要安装程序)。我试图通过向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
提交
取消
意见反馈 帮助中心 APP下载
官方微信