2010-11-21 49 views
0

我想將我的程序移動到USB存儲器。它只能在記憶棒上運行,不會被複制(用C#編寫,並有近3GB的數據庫)。 我在哪裏可以找到一個很好的來源和/或我該怎麼做?創建一個在USB存儲器上運行的程序

+3

實際的問題是什麼?爲什麼你不能在寫程序時寫它?該程序運行後,甚至不知道它是從硬盤還是從USB驅動器加載到內存,這是操作系統的業務。只是使用相對路徑的文件,就是這樣,我想。 – Kos 2010-11-21 15:55:24

+0

如何做到這一點?編寫你自己的操作系統或找到一個適合你的3GB數據庫的USB存儲器的操作系統。 – stillstanding 2010-11-21 15:59:23

+0

實際的問題是如何使程序只能在記憶棒上運行。它不能被複制到硬盤或其他地方。即使用戶複製到硬盤,它也不應該運行。 – Savas 2010-11-21 16:05:09

回答

1

您所描述的內容無法合理完成。如果用戶可以運行該程序,他們可以運行它。無論他們是否從USB存儲器加載它都沒關係。你可以這樣寫,它假設它是從U盤上運行的(相對路徑,根據@ Kos的評論),但這決不會阻止人們將其拷貝到他們的硬盤並運行它。由於您不知道USB記憶棒將提前安裝在何處,因此您甚至無法使用絕對路徑。

+0

所以,如果我想分發我的程序在記憶棒中,我只是簡單地複製,並且沒有辦法避免複製。 – Savas 2010-11-21 19:01:14

+0

@Savas:非常。你可以在drm計劃上花錢,但它們不起作用。 – nmichaels 2010-11-22 02:20:13

1

允許我不同意nmichaels,如果您從可移動存儲或硬盤驅動器運行,可以在C#中檢查。
檢查這個帖子:How to detect if any specific drive is a hard drive?
但是,這將是太容易扭轉的東西,並允許它在硬盤上運行。
作爲附加保護,您可以讀取串口USB驅動器,如果不匹配,請終止程序。
或...如果您想要硬核,請使用特定的USB驅動器型號,並讀取VID/PID或芯片本身(檢查批量生產工具)。
最後,如果程序值得的話,有人仍然會反轉它並打破保護計劃:)

+0

我想我已經這樣做了,因爲我記得:) – Savas 2014-03-17 13:53:42

相關問題