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