2009-08-19 26 views
4

我需要一個應用程序才能從特定的USB閃存驅動器運行。我用WMI Win32_Diskdrive類和PNPdeviceID屬性做了一些測試。使用此數據將應用程序註冊到許可證服務器(Web服務)是一個非常好的主意,但我正在尋找第二種方法來重新強化這一功能,以便使此過程更難以中斷。如何限制應用程序只能從已知的USB閃存驅動器運行?

我想在驅動器中創建第二個小的隱藏分區,並將其作爲PNPdeviceID或其他信息所產生的串行名稱進行定位。任何其他想法,方法或建議都被接受。

在此先感謝。

編輯:我已經知道USB閃存驅動器的唯一ID,應用程序可以檢查接口類型屬性是否爲「USB」。我正在使用PNPDeviceID在Web服務支持的許可證管理器中註冊應用程序。我正在尋找另一種第二種驗證方法。

+0

把一個問題你的問題裏面:一些反作弊樣GunBound的知道,如果它的文件被創建其安裝程序/更新程序或由用戶複製。您不會更改文件中的單個字節,但它以某種方式感知其差異並說安裝「已妥協」。 Howtf完成了嗎? :O – Havenard 2009-08-19 23:00:10

回答

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類可移動。屬性InterfaceType返回「USB」。那麼如果應用程序被複制到另一個可移動媒體中呢? – backslash17 2009-08-19 23:24:02

相關問題