エクスプローラーのファイルの関連付けを変更するコードを書きました。
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 プロセスを再起動せずに、エクスプローラーに強制的にレジストリ設定を再読み込みさせることはできますか?
前もって感謝します。