2017-06-30 6 views
1

私は現在のユーザートークンを通常のプロセスから取得しようとしています(昇格されていない、SYSTEMなどではありません)。私はWTSQueryUserTokenを使用してこれを試しましたが、動作しないようにSYSTEMアクセスが必要です。私はインターネット上で唯一見つけたのは、ユーザーのSIDまたは名前を取得していますが、現在のユーザートークンを取得することについて何も見つかりませんでした。これも可能ですか?C++プロセス所有者/現在のユーザートークンを取得する

+0

「現在の」ユーザーの意味ですか?どのプロセスからこれをやってみるのですか? – RbMm

+0

'WTSQueryUserToken'は、特定のセッションにログインしたユーザに属するトークンを取得するためのもので、プロセスとは関係ありません。プロセスに関連付けられたトークンを取得する場合は、 'OpenProcessToken'を使用してください。 –

+0

プログラムを実行しているユーザーからユーザートークンを取得したい(ユーザートークンがそのユーザーによって実行されているため、プログラムはユーザートークンにアクセスする必要があります) – RoDaBaFilms

答えて

2

したがって、トークンを現在のプロセスに関連付ける必要があります。これは単純です:あなたは、あなたがそれを持ってたら、トークンを使用して行うことを意図しているものに応じて、異なるアクセス権を指定する必要があり

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &token_handle)) fail(); 

注意。 TOKEN_READ権限は、ユーザー名を抽出するなど、トークンを照会する場合に適切です。現在のプロセストークンに共通のもう1つの特権を有効にする場合は、代わりにTOKEN_ADJUST_PRIVILEGEが必要です。

関連する問題