掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
起動しているプロセスのフルパスを取得するには? (ID:71047)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
PSAPI使ってますが・・・ C++ CLI でのコードですが、参考にして下さい。 尚、VISTA/Win7で動作するようになってますので、セッションの 判断も加味されてます。 尚、ループで取得している部分のコードです。 詳細については・・・推測して下さい。 do{ String^ exeFile; String^ exePath; String^ UserName;; String^ DomainName;; WCHAR fileName[MAX_PATH]; DWORD length; HANDLE hToken; MarshalString(procEntry.szExeFile, exeFile); DWORD winlogonSessId = 0; if (ProcessIdToSessionId(procEntry.th32ProcessID, &winlogonSessId) && winlogonSessId == dwSessionId ){ hProcess = OpenProcess(MAXIMUM_ALLOWED, false, procEntry.th32ProcessID); p1->Add(procEntry.cntUsage); p2->Add(procEntry.th32ProcessID); p3->Add(procEntry.th32ModuleID); p4->Add(procEntry.cntThreads); p5->Add(procEntry.th32ParentProcessID); p6->Add(procEntry.pcPriClassBase); p7->Add(exeFile); bRet = OpenProcessToken(hProcess, TOKEN_QUERY, &hToken); if (bRet){ PTOKEN_USER ptu; GetTokenInformation(hToken, TokenUser, NULL, 0, &length); ptu = (PTOKEN_USER)LocalAlloc(LPTR, length); bRet = GetTokenInformation(hToken, TokenUser, (LPVOID)ptu, length, &length); if (bRet){ WCHAR szUser[MAX_PATH]; WCHAR szDomain[MAX_PATH]; DWORD lUser; DWORD lDomain; SID_NAME_USE snu; lUser = MAX_PATH; lDomain = MAX_PATH; bRet = LookupAccountSid(NULL, ptu->User.Sid, szUser, &lUser, szDomain, &lDomain, &snu); if (bRet){ MarshalString(szUser, UserName); MarshalString(szDomain, DomainName); p9->Add(UserName + "/" + DomainName); } else p9->Add(""); } else p9->Add(""); LocalFree(ptu); CloseHandle(hToken); }else p9->Add(""); p10->Add(IsCurrentUserLocalAdministrator((IntPtr)hProcess)); length = GetModuleFileNameEx(hProcess, (HMODULE)procEntry.th32ModuleID, fileName, length); if (length > 0){ MarshalString(fileName, exePath); p8->Add(exePath); } else { p8->Add(""); } CloseHandle(hProcess); } } while (Process32Next(hSnap, &procEntry) != 0);
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.