Windows 如何打印从CreateEnvironmentBlock()获取的lpEnvironment 参见C++语言编写。p> BOOL WINAPI CreateEnvironmentBlock( _Out_ LPVOID *lpEnvironment, _In_opt_ HANDLE hToken, _In_ BOOL bInherit ); lpEnvironment [out] Type: LPVOID*

Windows 如何打印从CreateEnvironmentBlock()获取的lpEnvironment 参见C++语言编写。p> BOOL WINAPI CreateEnvironmentBlock( _Out_ LPVOID *lpEnvironment, _In_opt_ HANDLE hToken, _In_ BOOL bInherit ); lpEnvironment [out] Type: LPVOID*,windows,visual-studio,Windows,Visual Studio,当最后一个函数返回时,它接收到指向新环境块的指针。环境块是以null结尾的Unicode字符串数组。列表以两个空(\0\0)结尾 我能够成功调用CreateEnvironmentBlock(),但我需要知道如何打印lpEnvironment的内容(我的意思是我想打印环境变量)。这是一个字符串列表,以空字符串结尾。在VS中使用Win32 Console应用程序项目模板创建的示例代码: #include "stdafx.h" #include <Windows.h> #include &

当最后一个函数返回时,它接收到指向新环境块的指针。环境块是以null结尾的Unicode字符串数组。列表以两个空(\0\0)结尾


我能够成功调用
CreateEnvironmentBlock()
,但我需要知道如何打印
lpEnvironment
的内容(我的意思是我想打印环境变量)。

这是一个字符串列表,以空字符串结尾。在VS中使用Win32 Console应用程序项目模板创建的示例代码:

#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;
}
#包括“stdafx.h”
#包括
#包括
#包括
#pragma注释(lib,“userenv.lib”)
int main()
{
句柄hToken=NULL;
BOOL ok=OpenProcessToken(GetCurrentProcess(),TOKEN\u READ,&hToken);
断言(ok);
wchar_t*penv=L“”;
ok=CreateEnvironmentBlock((void**)和penv、hToken、TRUE);
断言(ok);
而(*penv){
printf(“%ls\n”,penv);
penv+=wcslen(penv)+1;
}
返回0;
}