DOBON.NETプログラミング道掲示板
(現在 過去ログ5 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全2記事(1-2 表示) ] <<
0
>>
■34899
/ inTopicNo.1)
拡張子関連付けのサンプルで削除時 例外発生
▼
■
□投稿者/ kurimu
一般人(1回)-(2021/08/31(Tue) 03:50:40)
環境/言語:[windous10 64bit vs2019 C# NET Framework4 Client Profile]
分類:[.NET]
初めての投稿です。どうぞよろしくお願いいたします。
質問ですが、下記サイトで紹介されている拡張子関連付けの削除のサンプルを試してみたところ例外が発生します。(以前は問題無く動作していたサンプルなのですが)
どうしたら良いのでしょうか?
dobon.net
関連付けを解除する
https://dobon.net/vb/dotnet/system/associatedapp.html
ソース抜粋
//拡張子
string extension = ".000";
//ファイルタイプ名
string fileType = Application.ProductName;
//レジストリキーを削除
Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(extension);
Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(fileType);
↑
この行で例外
サブキーが存在しないため、サブキー ツリーを削除できません。
とのメッセージが出ます。
引用返信
削除キー/
編集
削除
■34900
/ inTopicNo.2)
Re[1]: 拡張子関連付けのサンプルで削除時 例外発生
▲
▼
■
□投稿者/ KURIMU
一般人(1回)-(2021/09/02(Thu) 15:44:43)
自己解決しました。
レジストリ書き込みをCurrentUserに変更しました。
以下のように変更しました。
private void レジストリ登録()
{
//関連付ける拡張子
string extension = ".000";
//実行するコマンドライン
string commandline =
"\"" + Application.ExecutablePath + "\" \"%1\"";
//ファイルタイプ名
string fileType = Application.ProductName + ".0";
//説明(「ファイルの種類」として表示される)
string description = "MyApplication File";
//動詞
string verb = "open";
//動詞の説明(エクスプローラのコンテキストメニューに表示される。
// 省略すると、「開く(&O)」となる。)
string verbDescription = "MyApplicationで開く(&O)";
//アイコンのパスとインデックス
string iconPath = Application.ExecutablePath;
int iconIndex = 0;
Microsoft.Win32.RegistryKey rootkey =
Microsoft.Win32.Registry.CurrentUser;
//拡張子のキーを作成し、そのファイルタイプを登録
Microsoft.Win32.RegistryKey regkey =
rootkey.CreateSubKey("Software\\Classes\\" + extension);
regkey.SetValue("", fileType);
regkey.Close();
//ファイルタイプのキーを作成し、その説明を登録
Microsoft.Win32.RegistryKey typekey =
rootkey.CreateSubKey("Software\\Classes\\" + fileType);
typekey.SetValue("", description);
typekey.Close();
//動詞のキーを作成し、その説明を登録
Microsoft.Win32.RegistryKey verblkey =
rootkey.CreateSubKey("Software\\Classes\\" + fileType + "\\shell\\" + verb);
verblkey.SetValue("", verbDescription);
verblkey.Close();
//コマンドのキーを作成し、実行するコマンドラインを登録
Microsoft.Win32.RegistryKey cmdkey =
rootkey.CreateSubKey("Software\\Classes\\" + fileType + "\\shell\\" + verb + "\\command");
cmdkey.SetValue("", commandline);
cmdkey.Close();
//アイコンのキーを作成し、アイコンのパスと位置を登録
Microsoft.Win32.RegistryKey iconkey =
rootkey.CreateSubKey("Software\\Classes\\" + fileType + "\\DefaultIcon");
iconkey.SetValue("", iconPath + "," + iconIndex.ToString());
iconkey.Close();
}
private void レジストリ削除()
{
//////拡張子
string extension = ".000";
//ファイルタイプ名
string fileType = Application.ProductName + ".0";
Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(extension);
Microsoft.Win32.RegistryKey regkey =
Registry.CurrentUser.OpenSubKey(@"Software\Classes\", true);
regkey.DeleteSubKeyTree(fileType);
regkey.Close();
}
以上です。
これで解決済とさせていただきます。
解決
済
み!
引用返信
削除キー/
編集
削除
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-