현재 사용자에 대한 모든 프로세스 가져 오기

알리미 안

현재 사용자에 대한 모든 프로세스를 가져와야합니다. 현재 모든 사용자가 모든 활성 프로세스를 가져 오는 WMI를 사용하여 구현 된 기능이 있습니다. 어떻게 든 현재 사용자가 모든 프로세스를 가져와야합니다.

Windows의 작업 관리자, 세부 정보 탭으로 이동하면 모든 사용자의 모든 프로세스를 볼 수 있습니다. 그러나 Visual Studio에 있고 Debug / Attach To Process로 이동하면 현재 사용자의 모든 프로세스가 표시됩니다. 그게 제가 필요한 목록입니다.

모든 사용자의 모든 프로세스에 대한 솔루션은 다음과 같습니다.

    CComPtr<IEnumWbemClassObject> pEnumerator;
    hres = pSvc->ExecQuery(
        bstr_t("WQL"),
        bstr_t("SELECT * FROM Win32_Process"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

WMI 또는 Win32 솔루션으로 충분합니다. 감사합니다!!

알리미 안

이제 짧은 길이 있습니다. 그러나 관심이 있다면 여기에 작업 솔루션이 있습니다.

std::wstring GetProcessUserName(DWORD dwProcessId)
{
    HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessId);
    if (processHandle != NULL)
    {
        HANDLE tokenHandle;
        if (OpenProcessToken(processHandle, TOKEN_READ, &tokenHandle))
        {
            TOKEN_USER tokenUser;
            ZeroMemory(&tokenUser, sizeof(TOKEN_USER));
            DWORD tokenUserLength = 0;

            PTOKEN_USER pTokenUser;
            GetTokenInformation(tokenHandle, TOKEN_INFORMATION_CLASS::TokenUser, NULL,      
            0, &tokenUserLength);
            pTokenUser = (PTOKEN_USER) new BYTE[tokenUserLength];

            if (GetTokenInformation(tokenHandle, TOKEN_INFORMATION_CLASS::TokenUser, pTokenUser, tokenUserLength, &tokenUserLength))
            {
                TCHAR szUserName[_MAX_PATH];
                DWORD dwUserNameLength = _MAX_PATH;
                TCHAR szDomainName[_MAX_PATH];
                DWORD dwDomainNameLength = _MAX_PATH;
                SID_NAME_USE sidNameUse;
                LookupAccountSid(NULL, pTokenUser->User.Sid, szUserName, &dwUserNameLength, szDomainName, &dwDomainNameLength, &sidNameUse);
                delete pTokenUser;
                return std::wstring(szUserName);
            }
        }
    }

    return std::wstring();
}

std::unordered_map<std::wstring, std::vector<DWORD>> GetAllRunningProcessesForCurrentUser()
{
    std::unordered_map<std::wstring, std::vector<DWORD>> processHash;

    HRESULT hres;

    // Initialize COM. ------------------------------------------

    hres = CoInitializeEx(0, COINIT_MULTITHREADED);
    if (FAILED(hres))
    {
        return processHash;
    }

    do {
        // Obtain the initial locator to WMI -------------------------

        CComPtr<IWbemLocator> pLoc;
        hres = pLoc.CoCreateInstance(CLSID_WbemLocator);
        if (FAILED(hres))
        {
            break;
        }

        // Connect to WMI through the IWbemLocator::ConnectServer method
        // Connect to the root\cimv2 namespace with
        // the current user and obtain pointer pSvc
        // to make IWbemServices calls.
        CComPtr<IWbemServices> pSvc;
        hres = pLoc->ConnectServer(
        _bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
        NULL,                    // User name. NULL = current user
        NULL,                    // User password. NULL = current
        0,                       // Locale. NULL indicates current
        NULL,                    // Security flags.
        0,                       // Authority (for example, Kerberos)
        0,                       // Context object 
        &pSvc                    // pointer to IWbemServices proxy
        );

        if (FAILED(hres))
        {
            break;
        }

        // Set security levels on the proxy -------------------------
        hres = CoSetProxyBlanket(
        pSvc,                        // Indicates the proxy to set
        RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
        RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
        NULL,                        // Server principal name 
        RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx 
        RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
        NULL,                        // client identity
        EOAC_NONE                    // proxy capabilities 
        );

        if (FAILED(hres))
        {
            break;
        }

        // Use the IWbemServices pointer to make requests of WMI ----

        CComPtr<IEnumWbemClassObject> pEnumerator;
        hres = pSvc->ExecQuery(
        bstr_t("WQL"),
        bstr_t("SELECT * FROM Win32_Process"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

        if (FAILED(hres))
        {
            break;
        }

        // Get the data from the query in step 6 -------------------

        CComPtr<IWbemClassObject> pclsObj;
        while (pEnumerator)
        {
            ULONG uReturn = 0;
            HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);

            if (0 == uReturn)
            {
                break;
            }

            VARIANT vtProp;
            VARIANT vtProp2;

            hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
            hr = pclsObj->Get(L"ProcessId", 0, &vtProp2, NULL, NULL);

            auto userName = GetProcessUserName(vtProp2.intVal);

            TCHAR szActiveUserName[_MAX_PATH];
            DWORD dwActiveUserNameLength = _MAX_PATH;
            GetUserName(szActiveUserName, &dwActiveUserNameLength);

            if (_tcscmp(userName.c_str(), szActiveUserName) == 0)
            {
                processHash[vtProp.bstrVal].push_back(vtProp2.intVal);
            }


            VariantClear(&vtProp2);
            VariantClear(&vtProp);

            pclsObj.Release();
        }
    } while (false);

    CoUninitialize();

    return processHash;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

프로세스에 대한 현재 권한 수준 가져 오기 (링)

분류에서Dev

Firebase에 로그인 한 후 현재 사용자 가져 오기

분류에서Dev

모든 사용자의 모든 역할 가져 오기 (예, 현재 로그인되지 않음)

분류에서Dev

현재 사용자 세부 정보 (예 : firebase에 로그인 한 사용자) 가져 오기

분류에서Dev

프로세스에 사용 가능한 메모리 가져 오기

분류에서Dev

C ++, MinGW에서 현재 프로세스 메모리 크기를 가져 오는 중 오류 발생

분류에서Dev

tmux 세션의 현재 메모리 사용량 가져 오기

분류에서Dev

팔로우 한 모든 사용자의 모든 게시물 가져 오기

분류에서Dev

모든 XML 노드에 대한 경로 가져 오기

분류에서Dev

사용자 지정 인증 MVC 4에 로그인 한 현재 사용자 가져 오기

분류에서Dev

다중 처리 모든 프로세스에 대한 현재 폴더 변경

분류에서Dev

Oracle 11g의 모든 사용자에 대한 마지막 로그인 날짜 가져 오기

분류에서Dev

모든 프로세스에 대한 CPU 사용량 기록

분류에서Dev

Python을 사용하여 폴더에 대한 액세스 권한이있는 모든 그룹 가져 오기

분류에서Dev

Arch Linux-모든 시간대에 대한 시간 오프셋 가져 오기

분류에서Dev

모든 프로세스가 완료되었지만 이상한 출력 후 대기를 사용하십시오.

분류에서Dev

Plone에 현재 로그인 된 사용자 가져 오기

분류에서Dev

현재 값이있는 모든 시퀀스 가져 오기

분류에서Dev

fstab의 모든 사용자에 대한 쓰기 가능한 액세스

분류에서Dev

YouTube API-재생 목록 쿼리로 모든 동영상에 대한 태그 가져 오기

분류에서Dev

다른 채팅에서 한 사용자의 모든 대화 가져 오기 MYSQL

분류에서Dev

LDAP에서 현재 사용자에 대한 모든 그룹 및 역할 받기

분류에서Dev

현재 커널 모드에서 실행중인 모든 프로세스를 가져 오는 방법은 무엇입니까?

분류에서Dev

Fish 명령 줄 : 현재 프로세스에서 커서 위치 가져 오기

분류에서Dev

모든 .uploadedFiles에 대한 모든 파일 가져 오기

분류에서Dev

현재 시간대의 문자열로 datetime 가져 오기

분류에서Dev

React Native의 Firebase에서 현재 사용자 액세스 토큰 가져 오기

분류에서Dev

모든 행에 대한 새 열로 행 창에서 최대 값 가져 오기

분류에서Dev

Vue.js-Vuex 모듈에서 현재 경로 가져 오기

Related 관련 기사

  1. 1

    프로세스에 대한 현재 권한 수준 가져 오기 (링)

  2. 2

    Firebase에 로그인 한 후 현재 사용자 가져 오기

  3. 3

    모든 사용자의 모든 역할 가져 오기 (예, 현재 로그인되지 않음)

  4. 4

    현재 사용자 세부 정보 (예 : firebase에 로그인 한 사용자) 가져 오기

  5. 5

    프로세스에 사용 가능한 메모리 가져 오기

  6. 6

    C ++, MinGW에서 현재 프로세스 메모리 크기를 가져 오는 중 오류 발생

  7. 7

    tmux 세션의 현재 메모리 사용량 가져 오기

  8. 8

    팔로우 한 모든 사용자의 모든 게시물 가져 오기

  9. 9

    모든 XML 노드에 대한 경로 가져 오기

  10. 10

    사용자 지정 인증 MVC 4에 로그인 한 현재 사용자 가져 오기

  11. 11

    다중 처리 모든 프로세스에 대한 현재 폴더 변경

  12. 12

    Oracle 11g의 모든 사용자에 대한 마지막 로그인 날짜 가져 오기

  13. 13

    모든 프로세스에 대한 CPU 사용량 기록

  14. 14

    Python을 사용하여 폴더에 대한 액세스 권한이있는 모든 그룹 가져 오기

  15. 15

    Arch Linux-모든 시간대에 대한 시간 오프셋 가져 오기

  16. 16

    모든 프로세스가 완료되었지만 이상한 출력 후 대기를 사용하십시오.

  17. 17

    Plone에 현재 로그인 된 사용자 가져 오기

  18. 18

    현재 값이있는 모든 시퀀스 가져 오기

  19. 19

    fstab의 모든 사용자에 대한 쓰기 가능한 액세스

  20. 20

    YouTube API-재생 목록 쿼리로 모든 동영상에 대한 태그 가져 오기

  21. 21

    다른 채팅에서 한 사용자의 모든 대화 가져 오기 MYSQL

  22. 22

    LDAP에서 현재 사용자에 대한 모든 그룹 및 역할 받기

  23. 23

    현재 커널 모드에서 실행중인 모든 프로세스를 가져 오는 방법은 무엇입니까?

  24. 24

    Fish 명령 줄 : 현재 프로세스에서 커서 위치 가져 오기

  25. 25

    모든 .uploadedFiles에 대한 모든 파일 가져 오기

  26. 26

    현재 시간대의 문자열로 datetime 가져 오기

  27. 27

    React Native의 Firebase에서 현재 사용자 액세스 토큰 가져 오기

  28. 28

    모든 행에 대한 새 열로 행 창에서 최대 값 가져 오기

  29. 29

    Vue.js-Vuex 모듈에서 현재 경로 가져 오기

뜨겁다태그

보관