Как ограничить запуск приложения только с известного USB-накопителя? - PullRequest
4 голосов
/ 20 августа 2009

Мне нужно приложение для запуска только с определенного USB-накопителя. Я провел некоторый тест с использованием класса WMI Win32_Diskdrive и свойства PNPdeviceID . Это очень хорошая идея, чтобы зарегистрировать приложение на сервере лицензий (веб-сервисах) с этими данными, но я ищу второй способ усилить его, чтобы усложнить процесс взлома.

Я думал создать второй маленький скрытый раздел на диске и найти в нем в качестве имени серийный номер, указанный в PNPdeviceID или другой информации. Любая другая идея, метод или предложение принимаются.

Заранее спасибо.

РЕДАКТИРОВАТЬ: я уже знаю уникальный идентификатор с флэш-накопителя USB, и приложение может проверить, является ли свойство Interfacetype"USB". Я регистрирую приложение с помощью хэша PNPDeviceID в диспетчере лицензий, поддерживаемом веб-службами. Я ищу дополнительный второй метод проверки.

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Вы можете проверить тип диска, с которого работает программа:

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();
}
1 голос
/ 20 августа 2009

Вы можете проверить серийный номер тома, который перехватит случайное копирование на вновь отформатированный том, но не обнаружит полные копии тома с точным байтом.
Для защиты программного обеспечения путем доступа к жесткому диску с серийным номером
Есть ли более быстрый способ получить серийный номер тома?

...