プロセスの所有ユーザがSYSTEMかそれ以外かを判定する方法 – プログラミング – Home

プロセスの所有ユーザがSYSTEMかそ...
 
通知
すべてクリア

プロセスの所有ユーザがSYSTEMかそれ以外かを判定する方法


山田
 山田
(@山田)
ゲスト
結合: 14年前
投稿: 1
Topic starter  

任意の起動中プロセスがユーザ権限で動作しているか、SYSTEMとして動作しているかの
判定を
行う必要があります。

XP環境では以下のコードでアカウント名を取得して、SYSTEMかどうかで判定を行い
実装可能ですが、Vista、7環境では管理者権限の問題かOpenProcess()で失敗します。
Vista以降は、管理者権限がない状態で判定する必要があります。

他の方法でもかまいませんので、プロセスの所有ユーザがSYSTEMかそれ以外かを判定す
る方法
をご存知の方がいましたらご教授お願いできないでしょうか?

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE,dwPId);
if(hProcess) {
  OpenProcessToken(hProcess,TOKEN_READ,&hAccessToken);

  if( GetTokenInformation(hAccessToken,TokenUser,InfoBuffer, 1000,
&dwInfoBufferSize) ) {
    LookupAccountSidA(NULL, pTokenUser->User.Sid, szAccountName,
     &dwAccountSize,szDomainName, &dwDomainSize, &snu);

    //アカウント名取得
    _tprintf(_T(%s : ), procEntry.szExeFile);
    printf(%s \n,szAccountName);
  }
  else {
    //失敗
  }
}  
else {
  //失敗
}


引用解決済
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

OpenProcess に失敗するんではとっかかりがありませんね。
あとはこっちも SYSTEM 権限で動作するサービスを立ち上げて対抗するとか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました