すべてのコメント、特にマークからのコメントは有効です。
あなたの最善の策は、Authenticode署名を見ることだと思います-それは彼らが意図しているもののようなものです. ポイントは、exe または dll が証明書で署名されており (SSL 要求と同じように、組織の情報をそれにスタンプする)、変更されたバージョンは (理論的には、すべての通常のセキュリティ警告に加えて) 同じもので再署名できないことです。証明書。
要件に応じて (これは、この「セキュリティ ターゲット」が少しばかげているためです。コードの整合性を検証する機能は、Windows エクスプローラーでファイルをチェックする方法のウォークスルーと同じくらい簡単です)、これで十分です。それ自体 (Windows には、証明書から発行元情報を表示する機能が組み込まれています) または、Authenticode 証明書を検証するルーチンを作成できます。
この SO Verify whether an executable is signed or not (signtool used to sign that exe)を参照してください。一番上の回答は、認証コード証明書をプログラムで確認する方法に関する(確かに古い)記事へのリンクです。
アップデート
Marc が提案したことに従うには、自己プログラムによるチェックが必要な場合でも、これでは十分ではありません。実行可能ファイルを変更してチェックを削除し、証明書なしで展開できます。したがって、それを殺します。
正直に言うと、ホストアプリケーション/環境には独自のチェックが必要です (たとえば、有効な認証コード証明書を要求するなど)。コードが変更されないことが非常に重要な場合は、それを行うための独自の手順が必要です。あなたは実際に野生のガチョウを追いかけているのではないかと思います。
明らかに提供されている実際のセキュリティについてあまり心配することなく、あなたに代わって最小限の労力で済むチェックを入れてください-私はあなたが不可能な点から始めていると思うからです. あなたが書いたコードを誰かがハックしたいと思う純粋な理由が実際にあるとすれば、それをハッキングしようとするのはただの男子生徒だけではありません。したがって、利用可能なソリューション(コメントなどで言及されているもの)は簡単に覆されます。
私の「野生のガチョウ追跡」コメントを説明する最後の文を引用してください
最も弱いリンクの原則に従います。実行可能ファイルの整合性は、その実行可能ファイルを実行するホストのセキュリティ要件と同じくらい有効です。
したがって、UAC がオンになっており、すべてのセキュリティ機能がオンになっている最新の Windows マシンでは、たとえば、署名されていないコードをインストールまたは実行することは非常に困難です。ユーザーは本当にそれを実行したいに違いありません。これらをすべてゼロにすれば、比較的簡単です。ルート化された Android フォンでは、携帯電話を殺す可能性のあるものを簡単に実行できます。これには他にも多くの例があります。
したがって、コードが展開される XP Embedded 環境に、最初に実際に実行されるものに関するランタイム セキュリティ チェックがない場合 (たとえば、すべてのアプリケーションに Authenticode 証明書を要求するポリシー)、継承したポイントから開始することになります。実際に提供することになっているよりも低いレベルのセキュリティ。セキュリティプリミティブとルーチンの量はそれを復元できません。