简短的回答:在保险库中。从 Windows 7 开始,创建了一个 Vault 用于在其中存储任何敏感数据和 Internet Explorer 的凭据。Vault 实际上是一个 LocalSystem 服务 - vaultsvc.dll。
长答案:
Internet Explorer 允许两种凭据存储方法:网站凭据(例如:您的 Facebook 用户和密码)和自动完成数据。从版本 10 开始,引入了一个新术语,而不是使用注册表:Windows Vault。Windows Vault 是凭据管理器信息的默认存储库。
您需要检查正在运行的操作系统。如果是 Windows 8 或更高版本,则调用VaultGetItemW8。如果不是,则调用VaultGetItemW7。
要使用“Vault”,您需要加载一个名为“vaultcli.dll”的 DLL 并根据需要访问其功能。
典型的 C++ 代码将是:
hVaultLib = LoadLibrary(L"vaultcli.dll");
if (hVaultLib != NULL)
{
pVaultEnumerateItems = (VaultEnumerateItems)GetProcAddress(hVaultLib, "VaultEnumerateItems");
pVaultEnumerateVaults = (VaultEnumerateVaults)GetProcAddress(hVaultLib, "VaultEnumerateVaults");
pVaultFree = (VaultFree)GetProcAddress(hVaultLib, "VaultFree");
pVaultGetItemW7 = (VaultGetItemW7)GetProcAddress(hVaultLib, "VaultGetItem");
pVaultGetItemW8 = (VaultGetItemW8)GetProcAddress(hVaultLib, "VaultGetItem");
pVaultOpenVault = (VaultOpenVault)GetProcAddress(hVaultLib, "VaultOpenVault");
pVaultCloseVault = (VaultCloseVault)GetProcAddress(hVaultLib, "VaultCloseVault");
bStatus = (pVaultEnumerateVaults != NULL)
&& (pVaultFree != NULL)
&& (pVaultGetItemW7 != NULL)
&& (pVaultGetItemW8 != NULL)
&& (pVaultOpenVault != NULL)
&& (pVaultCloseVault != NULL)
&& (pVaultEnumerateItems != NULL);
}
然后通过调用枚举所有存储的凭据
VaultEnumerateVaults
然后你检查结果。