先日、Visual StudioでC#のプログラムを実行しようとしたところ、Windowsセキュリティの警告が表示され、実行できなくなりました。
作っていたのは、簡単な練習プログラムです。 長くC#を扱ってきましたが、急に「自分で作ったプログラムが危険扱いされた」ことに驚きます。
今回は、なぜこの現象が起きるのか、USBメモリは関係しているのか、どう対処すればよいのかをまとめます。
自分で作ったプログラムでも止められる
Visual Studioでプログラムを実行すると、プロジェクト内の「bin」フォルダーなどに実行ファイルが作られます。
人間から見れば安全な教材ですが、Windowsセキュリティから見ると、作られたばかりで利用実績がなく、発行元を示すデジタル署名もない実行ファイルです。
Windowsはプログラムの内容を完全に理解して善悪を判断しているわけではありません。既知のウイルス情報、ファイルの動き、署名、利用実績などから危険性を予測しています。
そのため、危険だと断定したというより、「安全だと確認できないので念のため止めた」という状態に近いのです。
USBメモリも原因になるのか
今回はUSBメモリ内にC#のプロジェクトを保存していました。
ただし、USBに保存しただけで必ずブロックされるわけではありません。
一方で、USBは外部からファイルを持ち込めるため、学校や会社のパソコンでは警戒されやすい場所です。管理者がUSBからの実行を制限している場合もあります。
また、USB内で直接開発すると、読み書きの遅さや一時的な切断などで、Visual Studioの動作が不安定になることもあります。 USBは持ち運びやバックアップに使い、作業するときはパソコン内の専用フォルダーへコピーする方法が安全です。
C:\CSharpProjects
まずは保護の履歴を確認する
警告が出たら、すぐにWindowsセキュリティを無効にせず、何が止められたのかを確認します。
Windows セキュリティ
→ ウイルスと脅威の防止
→ 保護の履歴
ここには、ブロックされたファイル名や理由が表示されます。
ファイルの場所が自分のC#プロジェクト内であり、自分が作ったものだと確認できた場合に限り、「デバイスで許可」などを選択します。
知らないファイルや、心当たりのない場所にあるファイルは許可してはいけません。
除外設定は必要な範囲だけ
毎回同じ開発フォルダーが止められる場合は、除外設定を使う方法もあります。
Windows セキュリティ
→ ウイルスと脅威の防止
→ 設定の管理
→ 除外の追加または削除
ただし、USBドライブ全体やVisual Studio全体を除外するのはおすすめできません。別の危険なファイルまで検査されなくなる可能性があるからです。
除外する場合は、誤検知だと確認したうえで、開発専用フォルダーだけに限定します。
Windows Updateが影響する場合もある
昨日まで動いていたのに突然止められた場合、Windows UpdateやMicrosoft Defenderの更新が影響した可能性もあります。 判定基準は随時更新されるため、以前は問題なかった実行ファイルが更新後に止められることがあります。
ただし、保存場所をUSBに変えた、学校側の設定が変わったなど、別の原因も考えられます。
まとめ
Windowsセキュリティは、良いプログラムと悪いプログラムを完全に見分けられるわけではありません。 止められたファイルと理由を確認し、自分で作ったものだと確実に分かった場合だけ許可することが大切です。USB全体やセキュリティ機能全体を安易に除外しないようにしましょう。


コメント