2016-08-04 4 views
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。

答えて

1

enter image description hereなぜ私はdwLogonTypeをLOGON32_LOGON_BATCHに変更するとすべて正常に機能するのですか?

ユーザーのために何かをする必要があるときに使用されるようです。 であるが、他のタイプは直接そのためのものではない。

+1

私が正しく理解していれば、暗号化(および復号化)にはユーザーの資格情報が必要で、キャッシュから取得する必要があります。 'LOGON32_LOGON_NETWORK'では、そのオプションが資格情報をキャッシュしていないと具体的に言います。 (しかし、なぜ私はインタラクティブなオプションがうまくいかないのか分かりません。UACの限定トークンが生成されるからでしょうか?) –