FileRegistrationHelper
FileRegistrationHelper
public class FileRegistrationHelper
{
public static void SetFileAssociation(string extension, string progID)
{
// Create extension subkey
SetValue(Registry.ClassesRoot, extension, progID);
// Create progid subkey
string assemblyFullPath = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", @"\");
StringBuilder sbShellEntry = new StringBuilder();
sbShellEntry.AppendFormat("\"{0}\" \"%1\"", assemblyFullPath);
SetValue(Registry.ClassesRoot, progID + @"\shell\open\command", sbShellEntry.ToString());
StringBuilder sbDefaultIconEntry = new StringBuilder();
sbDefaultIconEntry.AppendFormat("\"{0}\",0", assemblyFullPath);
SetValue(Registry.ClassesRoot, progID + @"\DefaultIcon", sbDefaultIconEntry.ToString());
// Create application subkey
SetValue(Registry.ClassesRoot, @"Applications\" + Path.GetFileName(assemblyFullPath), "", "NoOpenWith");
}
private static void SetValue(RegistryKey root, string subKey, object keyValue)
{
SetValue(root, subKey, keyValue, null);
}
private static void SetValue(RegistryKey root, string subKey, object keyValue, string valueName)
{
bool hasSubKey = ((subKey != null) && (subKey.Length > 0));
RegistryKey key = root;
try
{
if (hasSubKey) key = root.CreateSubKey(subKey);
key.SetValue(valueName, keyValue);
}
finally
{
if (hasSubKey && (key != null)) key.Close();
}
}
}
string extension = ".def";
string title = "something here";
string extensionDescription = "some description";
FileRegistrationHelper.SetFileAssociation(
extension, title + "." + extensionDescription);
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步