env.c時(ERROR_ENVVAR_NOT_FOUND):遇到錯誤203調用CreateEnvironmentBlock()
#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
OS是Win7和gcc是明明的4.5.2。
我很困惑的是,爲什麼它得到了錯誤203
您可以調用'GetEnvironmentBlock',但不檢查返回值。你確定通話實際上失敗了嗎? – 2011-04-25 20:51:02