簡體   English   中英

是否可以鎖定應用程序中通用控件使用的內存?

[英]Is it possible to lock memory used by common controls in my application?

我正在編寫一個對其數據進行加密的應用程序。 然后,它可以顯示它在用戶輸入密碼后,使用應用程序的UI加密。 我的目標是盡量減少,而在RAM明文數據的曝光。 為此,我想盡可能避免將其交換到磁盤上。

我知道我可以調整進程的工作集(通過調用SetProcessWorkingSetSize API),然后將這些敏感頁面鎖定在RAM中(通過調用VirtualLock) 。從理論上講,這應該最大程度地減少將其寫入磁盤的機會。

我的問題是,我可以做所使用的通用控件在我的對話框窗口,即在內存中相同的編輯框組合框 ,最重要的RichEdit控制?

PS。 我假設它們都將堆中的數據用於我的進程。 正確?

編輯: 看到所有的評論下面我需要澄清。 說“鎖定”,我不是這個意思,“用掛鎖和鑰匙鎖住它,這樣沒有人能看到它。” 我的意思是,將其鎖定為與VirtualLock API。

您可以使用EM_SETHANDLE設置編輯控件的初始分配的句柄,然后在(如果)空間不足並且需要更多空間時響應EN_ERRSPACE

從那里開始,還取決於您是否在該內存塊上使用VirtualLockVirtualLock盡可能地保留在RAM中。 如果您打算做很多事情,則可能要考慮對控件進行超類化,以防止在各處復制代碼。

不管是好是壞,我都不相信富文本控件具有等效功能。

實際上,有一個本機Windows API可以幫助最大程度地減少關鍵內容(例如密碼)對內存刮取的影響。

請參閱CryptProtectMemory作為起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM