2009-08-19 3 views
4

특정 USB 플래시 드라이브에서만 실행하려면 응용 프로그램이 필요합니다. WMI Win32_Diskdrive 클래스와 PNPdeviceID 속성을 사용하여 몇 가지 테스트를 수행했습니다. 이 데이터를 사용하여 응용 프로그램을 라이센스 서버 (웹 서비스)에 등록하는 것은 매우 좋은 생각이지만이 프로세스를 중단하기가 더 어려워 지도록이 옵션을 강화하는 두 번째 방법을 찾고 있습니다.알려진 USB 플래시 드라이브에서만 응용 프로그램을 실행하도록 제한하는 방법은 무엇입니까?

드라이브에 두 번째 작은 숨겨진 파티션을 만들고 PNPdeviceID 또는 기타 정보로 표시된 일련의 이름으로 찾으려고했습니다. 다른 아이디어, 방법 또는 제안이 허용됩니다.

미리 감사드립니다.

EDIT : 이미 USB 플래시 드라이브에서 고유 한 ID를 알고 있으며 응용 프로그램에서 Interfacetype 속성이 "USB"인지 확인할 수 있습니다. 웹 서비스 지원 라이센스 관리자에서 PNPDeviceID 해시를 사용하여 응용 프로그램을 등록하고 있습니다. 나는 두 번째 검증 방법을 찾고있다.

+0

질문 내부의 질문을 퍼팅을 설치 프로그램/업데이터 또는 사용자가 복사 한 것입니다. 파일에서 단일 바이트는 변경하지 않지만 어떻게 든 차이를 감지하고 설치가 "손상"되었다고 말합니다. Howtf 완료입니까? : O – Havenard

답변

1

새로 포맷 된 볼륨으로 임시로 복사하는 볼륨 일련 번호를 확인할 수 있지만 전체 바이트 크기의 볼륨 복사본은 검색되지 않습니다.
To protect software by accessing harddisk serial no
Any faster method to get Volume Serial number?

당신은 프로그램이 실행되는 드라이브의 유형을 확인할 수 있습니다
+0

Win32_drive 클래스에서 WMI 속성 PNPDeviceID를 사용하고 있으며 모든 USB 플래시 드라이브에서 다르기 때문에 드라이브를 포맷하더라도 계속 유지됩니다. – backslash17

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(); 
} 
+0

WMI Win32_Drive 클래스를 사용하여 드라이브가 Removable인지 이미 알고 있습니다. InterfaceType 속성은 "USB"를 반환합니다. 그리고 응용 프로그램이 다른 이동식 매체에 복사되면 어떨까요? – backslash17

관련 문제