Привилегия системной службы для получения информации о процессе в Windows 7 - PullRequest
0 голосов
/ 04 января 2011

Я пытаюсь использовать привилегию системной службы, чтобы получить заголовок окна, имя процесса и идентификатор процесса в Windows 7, но это не удается.

Как я могу использовать открытый процесс для получения информации о процессе через привилегию системной службы?

1 Ответ

0 голосов
/ 04 января 2011

Чтобы получить другую информацию о процессе, вы должны включить SeDebugPrivilege для своей программы.

Этот код активирует ее для вас:

{
    int             err             = 0;
    int             result              = 0;
    HANDLE          token               = NULL;
    HANDLE          proc_handle         = NULL;
    TOKEN_PRIVILEGES        priv;

    /*Get the open process handle to the process*/
    proc_handle = GetCurrentProcess ();

    /* Get a token for this process.*/
    result = OpenProcessToken (proc_handle, TOKEN_ALL_ACCESS, &token);
    if (! result)
    {
    /* return failure */
    }

    /* Get the LUID for the SeDebugPrivilege privilege.*/
    result = LookupPrivilegeValue (NULL, SE_DEBUG_NAME,
        &priv.Privileges[0].Luid);
    if (! result)
    {
    err = qerr_win32toq (GetLastError ());
    printf("LookupPrivilegeValue failed with err: %d", err);

    goto out;
    }

    priv.PrivilegeCount = 1;
    priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    result = AdjustTokenPrivileges (token, FALSE, &priv, 0, (PTOKEN_PRIVILEGES)
        NULL, 0);
    if (! result)
    {
    err = qerr_win32toq (GetLastError ());
    printf ("AdjustTokenPrivilege failed with err: %d", err);

    goto out;
    }

out:
    if (token)
    CloseHandle (token);

    return err;
}
...