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.