環境変数の指定は?

CreateProcess で新しいプロセスを作る時に、新しい環境変数を1つだけ加えたいのだが、lpEnvironment の仕様がよくわからんので、ウェブページをあちこち行ったり来たりしていたのだが、1つ妙案が思い浮かぶ。
SetEnvironmentVariable で現在のプロセスに追加してから継承させればいいじゃん。(どうせ親プロセスはすぐに終了する予定だったし。)
ということで、こうなった:

#define UNICODE
#include <windows.h>

int main() {
    SetEnvironmentVariable(
        L"ZZ",
        L"日本語");
    
    STARTUPINFO startInfo = {sizeof(STARTUPINFO)};
    PROCESS_INFORMATION procInfo;
    BOOL nerr = CreateProcessW(
        L"C:\\cygwin\\bin\\bash.exe",
        L"C:\\cygwin\\bin\\bash.exe --login -i",
        NULL,
        NULL,
        FALSE,
        NORMAL_PRIORITY_CLASS,
        NULL,
        NULL,
        &startInfo,
        &procInfo);

    if (nerr) {
        CloseHandle(procInfo.hThread);
        CloseHandle(procInfo.hProcess);
    }
    return 0;
}

ソースはUTF-8(BOMなし)。コンパイルCygwinから g++ -mno-cygwin -mwindows。

日本語の環境変数がどうなるかはまだ未検証。