получил ошибку 203 (ERROR_ENVVAR_NOT_FOUND) при вызове CreateEnvironmentBlock () - PullRequest
0 голосов
/ 26 апреля 2011

env.c:

#include <windows.h>
#include <stdio.h>
#include <Userenv.h>
#include <Wtsapi32.h>
int main() {
    DWORD err;
    HANDLE hTokenThis = NULL;
    HANDLE hTokenDup = NULL;
    HANDLE hThisProcess = GetCurrentProcess();
    OpenProcessToken(hThisProcess, TOKEN_ALL_ACCESS, &hTokenThis);

    err=GetLastError();
    printf( "err002:%d\n",err);

    LPVOID pEnv = NULL;
    CreateEnvironmentBlock(&pEnv, hTokenThis, TRUE);

    err=GetLastError();
    printf( "err003:%d\n",err);
    return 0;
}

скомпилируйте и запустите в cmd.exe текущего локального рабочего стола:

gcc -o env.exe env.c -lUserenv
env.exe
err002:126
err003:203

ОС - win7, а gcc - 4.5.2 из mingw.

Я так растерялся, что получил ошибку 203.

1 Ответ

3 голосов
/ 26 апреля 2011

Обратите внимание на возвращаемое значение функций winapi.Вызывайте GetLastError () только в том случае, если они возвращают код ошибки.

Токен, который вы передаете CreateEnvironmentBlock (), должен быть токеном пользователя, который вы получите, вызвав LogonUser ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...