请参阅用C ++编写的CreateEnvironmentBlock。
BOOL WINAPI CreateEnvironmentBlock(
_Out_ LPVOID *lpEnvironment,
_In_opt_ HANDLE hToken,
_In_ BOOL bInherit
);
lpEnvironment [out]
Type: LPVOID*
当最后一个函数返回时,它会收到指向新环境块的指针。环境块是一个以null结尾的Unicode字符串数组。该列表以两个空值结尾(\ 0 \ 0)。
我能够成功调用CreateEnvironmentBlock()
,但我需要知道如何打印lpEnvironment
的内容(我的意思是我想打印环境变量)。
答案 0 :(得分:1)
这是一个字符串列表,以空字符串结尾。使用VS中的Win32控制台应用程序项目模板创建的示例代码:
#include "stdafx.h"
#include <Windows.h>
#include <UserEnv.h>
#include <assert.h>
#pragma comment(lib, "userenv.lib")
int main()
{
HANDLE hToken = NULL;
BOOL ok = OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hToken);
assert(ok);
wchar_t* penv = L"";
ok = CreateEnvironmentBlock((void**)&penv, hToken, TRUE);
assert(ok);
while (*penv) {
printf("%ls\n", penv);
penv += wcslen(penv) + 1;
}
return 0;
}