自作アプリがWindowsに止められることがある
最近、プログラミング(C#)の授業でVisual Studioを使っていると、自分で作ったプログラムがWindowsのセキュリティ機能に止められることがありました。
作り手からすると、
「自分で作っただけなのに?」「ウイルスじゃないのに?」「昨日は動いたのに、今日はなぜ?」
と感じるかもしれません。

しかしこれは、プログラムが間違っているというより、Windowsが「よく知らないプログラム」を慎重に扱っているために起きます。
Windowsから見ると「知らないアプリ」
Visual StudioでC#のアプリを作ると、最終的には exe ファイルが作られます。
私たちから見れば、授業で作った練習用アプリです。
しかしWindowsから見ると、そのアプリを誰が作ったのか、安全なのかをすぐには判断できません。
特に授業で作るC#アプリは、正式な署名がないことがほとんどです。世の中で広く使われている有名なアプリでもありません。
そのためWindowsから見ると、「署名がない」「実行実績が少ない」「見慣れない」「USBなど外部メディアから実行されている」という条件がそろうことがあります。
その結果、Windows Defender、SmartScreen、Smart App Controlなどが、念のため実行を止める場合があります。
ウイルスという意味ではない
ここで大事なのは、止められたからといって、そのプログラムがウイルスだと決まったわけではないことです。
Windowsの判断は、「危険と確定したわけではない。ただ、安全と判断できる材料も少ない。だから、いったん止めておこう。」という考え方です。 Windowsは、「本人が作ったかどうか」ではなく、署名、実行実績、実行場所などを見て判断しています。
今まで動いていたのに、急に止まる理由
ややこしいのは、昨日まで動いていたアプリが、急に止まることがある点です。
理由はいくつか考えられます。
まず、Windows UpdateやMicrosoft Defenderの更新によって、セキュリティの判定が変わることがあります。 Windows本体だけでなく、Defender、SmartScreen、Smart App Control、.NET、Visual Studio関連の環境が更新されることで、今まで通っていたアプリが急に警戒される場合があります。
また、学校のPCでは、管理者側のセキュリティ設定やグループポリシーが変わることもあります。利用者から見ると何も変えていないように見えても、PC側のルールが変わっている場合があります。
さらに、Visual Studioでビルドし直すと、同じアプリ名でも新しい exe として扱われることがあります。少しコードを直しただけでも、Windowsから見ると「前とは別の見慣れないファイル」になることがあります。
そのため、
「AさんのPCでは動くのに、BさんのPCでは止まる」
「昨日は動いたのに、今日は止まる」
「少し直してビルドし直したら止まる」
ということが起きます。
USBから実行すると警戒されやすい
学校の授業では、USBメモリにプロジェクトを保存して使うことがあります。
USBは外部メディアなので、Windowsや学校PCのセキュリティ機能から見ると、警戒されやすい場所です。 授業では普通の使い方でも、Windowsから見ると、「外部メディアから、未署名の、作られたばかりのアプリが動こうとしている」状態になります。
そのため、ボタンを押すだけの簡単なC#アプリでも、実行時に止められることがあるのです。
信頼されてはじめて動く時代
自作アプリが止められるのは、プログラムのミスだけが原因とは限りません。
Windowsが、未知のプログラムに対して慎重になっている結果として起きることがあります。
昔は、プログラムを作ったらすぐに実行できるのが当たり前でした。
しかし今は、コンピューターが知らないプログラムを簡単には信用しない時代です。
自分で作ったC#アプリがWindowsに止められる。
それは少し面倒なトラブルです。
けれど同時に、現代のプログラムは「作ればすぐ自由に動くもの」ではなく、「信頼されてはじめて動けるもの」になっていることを教えてくれる出来事でもあります。



コメント