2011-07-15 27 views
0

我正在試圖製作一個應用程序,不應該在同一臺計算機的用戶之間在計算機或
之間移植。
這是最好的方法嗎?
如何使應用程序不可移植?

編輯: 通過not portable我的意思是,應用程序不應該是無需安裝使用。即)將安裝的文件夾移動到另一臺計算機或同一臺計算機的不同用戶登錄。

我們如何獲得一個始終唯一的計算機用戶登錄ID?

請原諒我可憐的英語。

+11

這不是「便攜」的意思。 –

+1

有趣的問題。 –

+2

定義用戶之間不可移植。 – Kugel

回答

0

讓您的安裝腳本將程序的某些模塊複製到用戶應用程序目錄。 在你的程序中添加該路徑到sys.path,該導入會找到你的模塊。

+0

整個應用程序安裝在用戶應用程序目錄中。它存儲一些特定於用戶的數據。如果應用程序與存儲的數據一起移動到不同的用戶登錄名,則會給用戶帶來問題。我想阻止這一點。 – nathan

+0

好吧,使用這個想法 - 將應用程序安裝到多個目錄中。因此,爲了使它便於攜帶,有人必須自己重新創建應用程序目錄結構,而不僅僅是複製單個文件夾。 – warvariuc

+0

或讓安裝腳本將應用程序配置文件放在一些非標準的位置,並使程序在沒有這些配置的情況下無法正常工作。或者同時使用兩種方法。 – warvariuc

0

如果您只想讓一個用戶訪問,您必須創建某種「登錄」。

這就是註冊或激活密鑰的用途。

http://en.wikipedia.org/wiki/Product_key

您包括用戶名,並在關鍵的一些機器識別,

+0

我很困惑你爲什麼不直接鏈接到甚至提及[你自己的第二高評價答案](http://stackoverflow.com/questions/261638/how-do-i-protect-python代碼/ 261727#261727)這個問題。 :) –

+0

@lazyr:我沒有看到反向工程和授權密鑰之類的訪問控制之間的聯繫。我錯過了什麼? –

+0

現在我很困惑。正如我所看到的,如果您可以對其進行逆向工程,那麼訪問控制就沒有意義了,是嗎?原則上,就是這樣。在實踐中,它起到了阻礙作用,因爲用戶需要強烈的動機來解決問題。 –

1

幾乎不管你什麼執行機制,其他用戶將總是能夠decompile the program and route around what prevents running它相對容易。兩個例外:

  • 將密鑰功能+驗證移入c模塊。這使得規避更難,但並非不可能

  • 將鍵功能+認證移到對您控制的遠程機器上執行的程序的調用中。在這裏,其他用戶需要根據樣本輸入和輸出重新實現功能 - 直接逆向工程是不可能的。

這些問題在鏈接問題的答案中有更詳細的介紹。當然,正如一些答案指出的那樣,你需要確定你想要付出多少麻煩,以及是否值得你這樣做。也許一個天真的Python本地訪問控制是足夠的威懾,即使一個熟練的程序員可以解決它。