Visual Studioで突然「アプリケーション制御ポリシーによってブロックされました」が表示されたときの対処法
Visual StudioでC#のプログラムを作成していると、生徒さんのPCだけ次のようなエラーが発生することがあります。
型 'System.IO.FileLoadException' のハンドルされていない例外が発生しました。
Could not load file or assembly
BinaryConverter.dll
アプリケーション制御ポリシーによってこのファイルがブロックされました。
(0x800711C7)
初めて見ると、
- C#のコードがおかしい?
- .NETのインストールに失敗した?
- Visual Studioが壊れた?
と思ってしまいます。
しかし、多くの場合はプログラムではなくWindowsのセキュリティ機能が原因です。
エラーの意味
今回のエラーは
Visual Studioが作成したDLLをWindowsが実行させなかった
という意味です。
つまり、
Visual Studio
│
ビルド成功
│
BinaryConverter.dll 作成
│
▼
Windows が
「このDLLは実行を許可しません」
│
▼
FileLoadException
ビルドは成功しています。
失敗しているのは実行です。
原因はSmart App Control
Windows 11には
Smart App Control(スマート アプリ コントロール)
というセキュリティ機能があります。
この機能は、
- 信頼できるアプリ
- 未知のアプリ
- 怪しいアプリ
を判定し、安全性が確認できないプログラムをブロックします。
Visual Studioで自分で作成したプログラムは、
まだ署名されていない未知のアプリ
として扱われることがあります。
その結果、
Visual Studio
↓
自分で作ったDLL
↓
Smart App Control
↓
実行をブロック
という流れになります。
確認方法
Windows 11では
設定
↓
プライバシーとセキュリティ
↓
Windows セキュリティ
↓
アプリとブラウザー コントロール
を開きます。
すると、次のような画面になります。

その中の
スマート アプリ コントロール
を確認します。
さらに
スマート アプリ コントロールの設定
をクリックすると、
- オン
- 評価
- オフ
のいずれかを確認できます。
状態ごとの意味
| 状態 | 意味 |
|---|---|
| オン | 未知のアプリを積極的にブロックする |
| 評価 | Windowsが利用状況を見ながら判断する |
| オフ | Smart App Controlは動作していない |
Visual Studioで影響を受けるケース
例えば授業で
Console.WriteLine()
程度のプログラムなら問題なく動くこともあります。
しかし、
WinFormsやWPFなど
DLLを読み込みながら実行するアプリでは
○ ビルド成功
×
DLL読み込み失敗
となることがあります。
学校や職業訓練校では注意
授業用PCでは、
Smart App Control以外にも
- AppLocker
- Windows Defender Application Control(WDAC)
- 組織のセキュリティポリシー
が設定されている場合があります。
そのため、
生徒自身の判断でSmart App Controlをオフにすることはおすすめできません。
環境によっては、一度オフにすると簡単には再度オンに戻せない場合があります。
授業中の切り分け方法
まずは次の順番で確認しましょう。
- 他の生徒PCで同じプロジェクトが動くか確認する
binとobjフォルダーを削除してリビルドする- Smart App Controlの状態を確認する
- それでも同じエラーなら、管理者へ相談する
今回のポイント
今回のエラーは、
C#のコードが間違っているわけではありません。
また、
Visual Studioが壊れているわけでもありません。
Windows 11のセキュリティ機能が、
Visual Studioで作成した未署名のDLLを実行前にブロックした
ことが原因でした。
授業中に同様のエラーが発生した場合は、コードを修正する前に、まずWindowsのセキュリティ設定を確認することをおすすめします。




ディスカッション
コメント一覧
まだ、コメントがありません