我写了一个代码,改变资源管理器的文件关联。
public void Associate(String app, String ext)
{
RegistryKey extKey = classesRoot.CreateSubKey("." + ext, RegistryKeyPermissionCheck.ReadWriteSubTree);
String prevValue = (String) extKey.GetValue("");
if (prevValue != null)
{
if (prevValue.Equals("BAMP_" + ext))
{
extKey.Close();
return;
}
extKey.SetValue(BAMP_BACKUP, prevValue, RegistryValueKind.String);
}
extKey.SetValue("", "BAMP_" + ext, RegistryValueKind.String);
extKey.Close();
RegistryKey bampKey = classesRoot.CreateSubKey("BAMP_" + ext + "\\shell\\open\\command");
bampKey.SetValue("", app + " \"\"%l\"\" ", RegistryValueKind.String);
bampKey.Close();
}
实际上,它备份旧文件关联并设置新文件。
它运作良好,注册表已更改。但是,资源管理器不会读取新设置,直到重新启动。
阅读官方文档并没有找到如何强制它重新加载注册表设置。
是否可以强制资源管理器重新加载注册表设置而不重启 explorer.exe 进程?
提前致谢。