2011-08-15 52 views
0

ユーザーを偽装しているサービスがあります。サービスはローカルシステムとして実行されています。ユーザーは、ローカル管理者およびドメイン管理者です。なりすましの後、プロセスのトークン特権を調整する必要があります。返されたトークンハンドルでOpenProcessTokenを使用し、次にAdjustTokenPrivilegesを使用してそれを行うことを望みました。ImpersonateLoggedOnUserの後にOpenProcessTokenが失敗する

LogonUserImpersonateLoggedOnUserを呼び出した後、次の呼び出しが失敗し、アクセスが拒否されました。

HANDLE hToken; 
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) 
{ 
     Log("Error=%d", GetLastError()); 
} 

私はLOGON32_LOGON_INTERACTIVELOGON32_PROVIDER_DEFAULTを使用して、ユーザーにログインしています。

ユーザートークンと同じ特権を調整することに成功しました。

答えて

1

これは、あなたがやろうとしているかに応じて、2つの部分からの答えです:

1)あなたが偽装トークンの権限を調整したい場合は、あなたがOpenProcessTokenない、OpenThreadToken関数を使用する必要があります。偽装はプロセス全体ではなくスレッドに影響します。これを試してください:あなたは本当にプロセストークンの権限を調整したいなかった場合は、クライアントを偽装していないとき、あなたはおそらく時点でこれを行う必要があり

OpenThreadToken(GetCurrentThread(), TOKEN_READ | TOKEN_ADJUST_PRIVILEGES, TRUE, &hToken) 

2)。必要に応じて偽装をオン/オフすることができます。

関連する問題