システムの整合性ポリシーに違反しています!?
私は配電盤やPLCだけじゃなく、ロボットからメカだけじゃなく、パソコンベースのシステムまで組む十徳ナイフ式エンジニアである。(器用貧乏型ともいう)
今回は、変な画像処理をさせる試作設備を担当したので、普通のパソコンに私がプログラムしたオリジナルソフトを入れて動かすシステムを作った。
オフィスでうまく動いたので、現地に移設していろいろ直したりテストしていたら・・・
「プログラムxxxx.exeを開始できません。
システムの整合性ポリシーに違反しています。不明なファイルの評価サービスに接続できません。」
というダイアログが出て、プログラムが全く作動しなくなって困った。
おかしいなぁ・・・オフィスでは動いたんだけど、何が変わってしまったんだろうか?必要なランタイムとかが足りないのかな??
と、いろいろ悩んだんだけど、結論としては
「スマートアプリコントロール」ってのが悪さをしていた。
Windows11から搭載された機能らしく、ここのサイトのおかげでその存在と、オフにする方法を知った。
※会社のネットワークからだと上のリンクが開けないので、メモとして手順を抜粋。
スタートメニュー→設定→プライバシーとセキュリティ→Windows セキュリティ
https://scrapbox.io/medianmoe/%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%92%E3%82%AA%E3%83%95%E3%81%AB%E3%81%99%E3%82%8B
Windowsセキュリティを開く
アプリとブラウザーコントロール
スマート アプリ コントロール
ここがオンになってたらオフにする
これで何の警告も出ずに実行できるようになった。
機能としては、コンピュータウィルスだとか、悪意のあるソフトなんかを誤って実行しようとしても、実行されないようにブロックしてくれるサービスらしい。
GoogleChromeのダウンロードなんかにも似たような機能あったよね・・・
たぶん、「実行しても大丈夫なプログラム」の一覧、いわゆるホワイトリストみたいなのがパソコンに保存されていて、そこから外れる奴は「不明なファイルの評価サービス」とかいうオンライン上のシステムでOKかNGか判定するんじゃないかと思う。
プログラムはビルドしなおす(細かい修正をする)たびに、厳密には別のプログラムになってしまう。自宅で修正したときは修正版が都度オンラインで「不明なファイルの評価サービス」に照会されて「実行しても大丈夫なプログラム」に登録されるから動いていた。しかしオフライン状態で修正してしまうと、その新しいプログラムの照会ができずにブロックされるようだ。
となると修正するたびにオンラインにしないといけないとなると、コレは厄介だなぁ・・・
とりあえず前述のサイトの説明に頼ってオフにすることにした。
オフにしようとすると物々しい警告が出る。もう後戻りできんぞと。
ま、しかたないしなーポチッと無効にしたら動くようになった。
スマートアプリコントロールの仕組みってどうなってんだ?
なんでこんな動きなのかなぁとちょっと考えてみた。
疑問は2つあって、
・自作アプリみたいなやつが、オンラインで評価サービスとやらに繋がっていれば動くのはなぜ?
(データベースには登録されていないはず)
・一回無効にしたら二度と有効にできないのはなぜ?
この二つの疑問が解決する仮説が一つあるかなと。
この「不明なファイルの評価サービス」って、実はプログラムが危険かどうかを直接調べているんじゃないのではないか?だって悪意があるソフトかどうかを分析するとなったら、それなりにコストが掛かるし・・・いくらお金をかけても瞬時に判別するのは難しいんじゃなかろうか?
とすると、過去に全く同じプログラムをインストールした人たちの何割がダメージを受けたかの統計を取っているんじゃないかなって気がする。
つまり、不明な食べ物があるとき、成分を分析して「危険」って判定してくれるサービスじゃなくて、治験みたいに100人が食べて20人が死んだから、これ「危ない食べ物かも」って判定して、101人目が来た時に「この食べ物危ないよ」ってブロックするんじゃないかな。
だから自作プログラムみたいに新しくて、過去に死んだ例がないプログラムは素通りなんだと思う。仮に毒だとしても。
オフラインだと一切実行できないとか、一度オフにしたら二度とオンにできないってのは、そう考えるとわかる気がする。食べ物の例でいうと、さっきの100人が食べて20人が死んだとして・・・もしかしてこの20人だけが別の食べ物を食べていた可能性があったとしたらどうだろう?「不明な食べもの」が死因になったかはっきりしないし、実際に害はなく、死因は未知の別のものかもしれない。
このように、「食べたもの全部がわかる」場合と、「ほかにも食べたものがあるかもしれない」場合では、危険の判定制度が大きく変わってしまう。データが汚染されるといえばいいのか。
それでこういう動きになっている…と考えれば自然かなぁ。
なので、常時オンラインで動く想定のパソコンなら結構いいサービスだと思う。
新種の悪意のあるソフト=ウィルスが出てきても、運悪く直撃した人は死ぬけど、その他の人は助かる。一種の免疫システムみたいなもんだ。
でも、工場のネットワークとかでオフラインで使うとなると、自作プログラムが動かせなくなっちゃうのでオフもありだと思う。いや、オフにするしかないのか。