syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

Visual Studioの読み取り専用ファイル編集確認ダイアログ

(これは2013-05-11に書いた故OCNブログの記事を移植したものです)

Visual Studioで読み取り専用ファイルを編集しようとしたら、「読み取り専用ファイルを編集」というタイトルで、「編集しようとしたファイル XXX はディスクで読み取り専用です。ファイルを書き込み可能にしますか? それともこのまま編集しますか?」という確認ダイアログが出てきて、「書き込み可能に設定」をクリックすると読み取り専用属性が自動解除されて編集を開始できるんですが、「今後このダイアログ ボックスを表示しない(メモリでの編集を許可しない)」というチェックボックスを誤ってONにして閉じてしまったら、ダイアログが二度と出てこなくなってしまった。

https://sygh-jp.github.io/content_hosting/software_ss/vs_readonly_file_edit_confirm_dialog_2013_05_11b.png

「ツール」→「オプション」→「環境」→「ドキュメント」あたりにダイアログの表示を復活させるオプションがあるんじゃないかと思って探しましたが、VS 2012ではどこにも見あたらない。

ネット検索をかけてみても、MSDNに「編集しようとしたファイル <name> はディスクで読み取り専用です。」というページはあるんですが、「ソース管理のためのプラグイン タブ ([オプション] ダイアログ ボックス)」で説明されている[リセット]ボタンとやらがどこにも存在しない。ヘルプはVS 2008のものらしいので、VS 2008はどうなってるのか調べたところ、やはりVS 2008にも該当するボタンなどは見あたらない。

このダイアログが出てこないと、読み取り専用ファイルの属性をIDEで自動解除させることができなくなってしまい不便なので、仕方なく「ツール」→「オプション」→「環境」→「ドキュメント」の、「読み取り専用ファイルの編集を有効にし、保存時に警告する」という項目をONにして対処することに。

https://sygh-jp.github.io/content_hosting/software_ss/vs_readonly_file_save_confirm_dialog_2013_05_11b.png

ただ、このオプションだと、「読み取り専用ファイルの保存前に」確認ダイアログが出るだけで、「読み取り専用ファイルの編集開始時に」確認ダイアログは出ません。自分としては「編集開始時に」確認ダイアログが出てくれたほうがありがたいんですが……誰かダイアログ表示の復活方法、知りませんか?

※2016-06-26追記:
コメントで提供していただいたヒントをもとに調べたところ、やはりレジストリに当該フラグ(の否定値)が保存されているようです。新規セットアップしたWindows 8.1上にて、Visual Studio 2012(11.0)/2013(12.0)/2015(14.0) のレジストリ情報を調べてみたところ、下記の値がすべて1になっていました。もし当該ダイアログを誤って非表示にしてしまった場合、下記を0から1に戻すことで対処できるものと思われます(当然レジストリの編集は自己責任で)。

  • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SourceControl\AllowUncontrolledInMemoryEditing
  • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\SourceControl\AllowUncontrolledInMemoryEditing
  • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\SourceControl\AllowUncontrolledInMemoryEditing

個人的には、ダイアログに「今後このダイアログを表示させない」チェックボックスを表示するんだったら、ダイアログ表示を再び復活させるオプションをちゃんと分かりやすいところに配置するべきだと思います。さらにそういうのが複数あるんだったら、リスト形式で一元管理できるべきなんですが……(コードエディターでの文字列検索/置換終了後に出てくる確認ダイアログの抑制に関しては、復活オプションが存在しますが、1つのチェックボックスで複数のオプションフラグがまとめて管理されてしまっています)