Internet Explorerは保存されたパスワードをどこに保存しますか?
これはプログラミングサイトなので、文字通りIEがパスワードを保存する場所を求めているわけではありませんが、パスワードを保存するために使用するAPI)。
最初は、Microsoftが標準APIを使用していると仮定しました。
これは、ドメインの保存に使用されますand汎用プログラム/ Webサイトの資格情報。
CredRead
/CredWrite
その後、向きを変えて使用します:
現在のユーザーのアカウントでデータを暗号化します。 CredRead
/CredWrite
はデータを魔法の場所に保存します。その内容はコントロールパネルから見ることができます:
しかし、IEパスワードがそこにありません。つまり、CredRead
/CredWrite
を使用してパスワードを保存しません。
Apiは、IEパスワードの保存に使用し、CryptProtectData
を使用する場合、保護されたデータをどこに保存しますか?
Edit:私が尋ねる理由は説明が不要です(かなり明白なので)が、それは同じメカニズムを使いたいかもしれないからです。
答えが見つかりました。 IEは、パスワードタイプに基づいて2つの異なる場所にパスワードを保存します。
%APPDATA%\Microsoft\Credentials
、暗号化されたファイル内HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
、URLで暗号化Internet Explorerのバージョン7.0から、Microsoftはパスワードの保存方法を完全に変更しました。以前のバージョン(4.0-6.0)では、すべてのパスワードは「保護されたストレージ」と呼ばれるレジストリの特別な場所に保存されていました。 Internet Explorerバージョン7.0では、パスワードの種類に応じて、パスワードは異なる場所に保存されます。パスワードの種類ごとに、パスワードの回復にいくつかの制限があります。
オートコンプリートパスワード:これらのパスワードは、レジストリの次の場所に保存されます。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
パスワードは、パスワードを要求したWebサイトのURLで暗号化されているため、URLが履歴ファイルに保存されている場合にのみ回復できます。履歴ファイルをクリアすると、IE PassViewは、パスワードを要求したWebサイトに再度アクセスするまでパスワードを回復できません。または、次のURLのリストを追加できますWebサイトファイルにユーザー名/パスワードを必要とするWebサイト(以下を参照)。HTTP認証パスワード:これらのパスワードは、
Documents and Settings\Application Data\Microsoft\Credentials
、およびLANコンピューターのログインパスワードとその他のパスワード。セキュリティの制限により、IE PassViewは、管理者権限がある場合にのみこれらのパスワードを回復できます。
私の特定のケースでは、どこの質問に答えます。そして、私はそれを複製したくないと決めました。引き続きCredRead
/CredWrite
を使用します。ユーザーは、Windowsで確立されたUIシステム内からパスワードを管理できます。
短い答え: Vaultで。 Windows 7以降、Internet Explorerの資格情報に機密データを保存するためにVaultが作成されました。 Vaultは、実際にはLocalSystemサービスであるvaultsvc.dllです。
長答: Internet Explorerでは、Webサイトの資格情報(たとえば、Facebookユーザーとパスワード)とオートコンプリートデータの2つの方法で資格情報を保存できます。バージョン10以降、レジストリを使用する代わりに、Windows Vaultという新しい用語が導入されました。 Windows Vaultは、資格情報マネージャー情報のデフォルトのストレージボルトです。
どのOSが実行されているかを確認する必要があります。 Windows 8以降の場合、VaultGetItemW8を呼び出します。そうでない場合は、VaultGetItemW7を呼び出します。
「Vault」を使用するには、DLLという名前の「vaultcli.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
次に、結果を確認します。
保証はありませんが、IEは古い Protected Storage APIを使用しています。