VBに古いプロジェクトがあり、MACアドレスとディスクIDから一意のPCコードを作成しました。これはPCを識別するために使用されたため、PC間で資格情報を使用できません。
このプロジェクトはC#に移行し、このロジックをDLLにカプセル化しました。これは、pc_idを返すメソッドを呼び出すだけです。
私が今持っている問題は、同じクラス名とメソッドシグネチャを持つ新しいDLLを作成し、希望するpc_idを返すだけで簡単にできることです。
DLLプログラムが参照しているプログラムが実際に私のものであることをどのように確認できますか?
私のDLLのハッシュをハードコードされたものと比較することを考えましたが、これは異なるOS間で安全ですか?ファイルのハッシュはファイルシステム間で変更されますか?
または、ファイルの整合性/生成元を保証する場合、どの方法が推奨されますか?
MACアドレスが提供する低いレベルの保護で、私は気にしないでしょう。 DLLを交換するよりもMACアドレスを変更するほうが簡単です。
ハッシュはファイルシステム間で変更されません。ファイルのSHA1ハッシュをコード内の既知の「適切な」値と照合すると、離れているはずです。
資格情報が他のPCで使用されるのを防ぐことを目的としている場合は、 Windowsデータ保護API を参照してください。これを使用すると、資格情報やその他のデータを暗号化でき、このコンピューターでのみ(または、必要に応じて現在のWindowsユーザーアカウントでのみ)解読できます。
MACアドレスは多くの保護を備えているだけでなく、それをディスクIDにキー付けすることは悪いことです。すべての「ディスク」が一貫したディスクIDを返すわけではありません。問題は、いくつかのRAIDコントローラーがディスクIDの要求に応答して、使用可能なドライブから取得することです。
誰かがハードウェアをアップグレードするとどうなるかは言うまでもありません。