1

(标题已更新以表明 _wgetenv 存在问题)

当变量的路径包含日文文本时,以下程序将失败并 显示错误 123 。使用 Visual Studio 2005 编译时,相同的程序运行良好。

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int  main  (int argc, char  **argv ) {
        wchar_t *wcharVarName= L"TEMP_PATH";
        wchar_t *longTempPath= _wgetenv(wcharVarName);

        MessageBoxW( NULL,  longTempPath, longTempPath, MB_OK | MB_ICONERROR);

        int wlength = GetShortPathNameW(longTempPath,0,0);
        int error= GetLastError();
        if ( wlength == 0 ) {
                char buf[1000];
                sprintf ( buf, "error code %d",error);
                MessageBox( NULL, "FAIL", buf, MB_OK | MB_ICONERROR);
        }
        else {
             MessageBoxW( NULL, longTempPath, wcharVarName, MB_OK | MB_ICONERROR);
        }

}

有没有办法使上述程序适用于 Visual Studio 6?

编辑:TEMP_PATH 是 C:\tmp\汉字。_wgetenv 显示...

在此处输入图像描述

4

1 回答 1

2

出于某种原因,在 VS6 下调用_wgetenv不会返回所需的值。这些?符号表示编码转换失败。

一个快速的解决方法是GetEnvironmentVariable改用。

于 2012-05-03T11:45:16.587 回答