我正在编写一个加密其数据的应用程序。然后,它可以在用户输入密码后使用应用程序的 UI 以未加密的方式显示它。我的目标是在 RAM 中尽量减少明文数据的暴露。为此,我想尽可能避免将其交换到磁盘。
我知道我可以调整我的进程的工作集(通过调用SetProcessWorkingSetSize API),然后将那些敏感页面锁定在 RAM 中(通过调用VirtualLock)。理论上,这应该最大限度地减少它被写入磁盘的机会。
我的问题是,我可以对对话框窗口中的常用控件(即编辑框、组合框和最重要的RichEdit控件)使用的内存做同样的事情吗?
PS。我假设他们都将堆中的数据用于我的进程。正确的?
编辑: 看到下面我需要澄清的所有评论。说“锁”,我不是说“用挂锁和钥匙把它锁起来,这样没人能看到”。VirtualLock
我的意思是,像使用API一样锁定它。