我写了一个代码,它改变了资源管理器的文件关联。
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进程?
提前致谢。