4

特定のUSBフラッシュドライブからのみ実行するアプリケーションが必要です。WMIWin32_DiskdriveクラスとPNPdeviceIDプロパティを使用してテストを行いました。このデータを使用してアプリケーションをライセンスサーバー(Webサービス)に登録することは非常に良い考えですが、プロセスを中断しにくくするために、これを強化する2番目の方法を探しています。

ドライブに2つ目の小さな隠しパーティションを作成し、その中にPNPdeviceIDまたはその他の情報によって取得されたシリアルの名前として配置することを考えていました。その他のアイデア、方法、提案はすべて受け入れられます。

前もって感謝します。

編集:私はすでにUSBフラッシュドライブからの一意のIDを知っており、アプリケーションはInterfacetypeプロパティが「USB」であるかどうかを確認できます。PNPDeviceIDのハッシュを使用してアプリケーションをWebサービスでサポートされているライセンスマネージャーに登録しています。追加の2番目の検証方法を探しています。

4

2 に答える 2

1

ボリュームのシリアル番号を確認できます。これにより、新しくフォーマットされたボリュームへのカジュアルコピーが検出されますが、完全なバイト単位の正確なボリュームコピーは検出されません。
ハードディスクのシリアルにアクセスしてソフトウェアを保護するにはいいえ
ボリュームシリアル番号を取得するためのより高速な方法はありますか?

于 2009-08-19T23:04:28.090 に答える
1

プログラムが実行されているドライブのタイプを確認できます。

string path = Process.GetCurrentProcess().MainModule.FileName;
FileInfo fileInfo = new FileInfo(path);
string driveRoot = fileInfo.Directory.Root.Name;
DriveInfo driveInfo = new DriveInfo(driveRoot);
if (driveInfo.DriveType != DriveType.Removable)
{
    MessageBox.Show("Must run from removable drive");
    Application.Exit();
}
于 2009-08-19T23:13:46.323 に答える