2

我写了一个代码,改变资源管理器的文件关联。

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 进程?

提前致谢。

4

0 回答 0