1
他のユーザーを偽装している間にEncryptFile関数を使用してファイル/フォルダを暗号化したいが、そのファイルに対するフルコントロールを他のユーザーに与えたが、依然としてアクセスが拒否される。偽装ユーザーとファイルの暗号化
HANDLE hUser;
if (LogonUser(L"test", L".", L"123", LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &hUser) == TRUE) {
ImpersonateLoggedOnUser(hUser);
if (EncryptFile(dir_to_enc) == FALSE) {
printf("%d\n", GetLastError()); // I get 5 - Access Denied
}
RevertToSelf();
CloseHandle(hUser);
}
編集:
私はLOGON32_LOGON_NETWORKからLOGON32_LOGON_INTERACTIVEへのLogonUserの四番目のパラメータを変更する、87にエラーコードの変更、ERROR_INVALID_PARAMETER。
私が正しく理解していれば、暗号化(および復号化)にはユーザーの資格情報が必要で、キャッシュから取得する必要があります。 'LOGON32_LOGON_NETWORK'では、そのオプションが資格情報をキャッシュしていないと具体的に言います。 (しかし、なぜ私はインタラクティブなオプションがうまくいかないのか分かりません。UACの限定トークンが生成されるからでしょうか?) –