2011-03-08 62 views
1

在Windows中,可以保護單個程序中的數據嗎?我一直在尋找CryptProtectData,但是whis是以用戶爲基礎的,我想要一些類似的東西,但是在程序的基礎上。我的程序將有多個用戶需要訪問相同的數據,但數據是敏感的,我不希望任何用戶閱讀它。保護單個程序中的數據

+0

你可能需要更具體的你想要完成什麼。 「 – sarnold 2011-03-08 11:53:53

+0

」需要訪問相同數據的用戶,但數據是有感染力的,我不希望任何用戶閱讀它。「 ????什麼..那不讓sence?附:製作一個服務器 - 客戶端。把它們分開放在不同的機器上。 – Sigtran 2011-03-08 11:54:47

+0

客戶端 - >服務器不是替代方案。我想知道是否有可能將文件訪問限制爲單個程序而不是單個用戶。 – thenail 2011-03-08 12:04:20

回答

0

首先,如果您的用戶具有管理員權限,那麼沒有明確的方法來阻止他們。

其次,即使他們不這樣做,您也必須在ring 0處實施部分軟件,因此它具有比用戶更高的權限,這將使他們難以訪問該流程'內存或可執行文件。然後,您可以加密您的數據並在將其提供給用戶時進行解密。

如果上述所有內容都不可行,您可以使用軟件開發人員使用的與破解相同的混淆技術。

這通常歸結爲防止調試或防止修補。一些建議在這裏:http://www.woodmann.com/crackz/Tutorials/Protect.htm

0

CryptProtectData(間接)使用用戶的憑據來加密數據。

在Windows(以及大多數其它通用計算機平臺),不可能對每個應用程序中的數據進行加密使得所述計算機屬於用戶,並且用戶是主機,而不是應用程序。

如果您不希望用戶(以及以用戶帳戶運行的其他應用程序)訪問數據,則需要將這些數據移出計算機,將其存儲在遠程系統上並控制用戶對這個數據。

0

如果你的用戶沒有管理員權限,那麼我會做的是讓你的程序爲自己的目的創建一個帳戶。當您的程序創建其數據文件時,它會在這些文件上設置ACL,以便它創建的帳戶是唯一有權訪問這些文件的帳戶。無論何時您的程序需要讀取/寫入這些文件,都需要使用其特殊帳戶臨時登錄。然後問題是保持該帳戶密碼的登錄憑據。這完全是另一個問題。