我正在尝试检查用户APPDATA文件夹中是否存在文件夹。当从 cmd 或 cygwin shell调用时,以下程序可以正常工作,但如果envrionment变量 APPDATA >,则从 mingw shell中失败strong>的值为 C:\ User \LieschenMüller
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
int main (int argc, char ** argv) {
const char * appdata;
DWORD result;
if (NULL != (appdata = getenv ("APPDATA"))) {
result = GetFileAttributes (appdata);
if (INVALID_FILE_ATTRIBUTES == result) {
fprintf (stderr, "<%s> = INVALID_FILE_ATTRIBUTES\n", appdata);
result = 1;
}
else if (!(FILE_ATTRIBUTE_DIRECTORY & result)) {
fprintf (stderr, "<%s> = ! FILE_ATTRIBUTE_DIRECTORY\n", appdata);
result = 1;
}
else {
fprintf (stderr, "<%s> OK\n", appdata);
result = 0;
}
}
else {
fprintf (stderr, "Failed to lookup APPDATA environment variable\n");
result = 1;
}
return (int) result;
}
在 cmd 或 cygwin 内,ü位置的字符为 0xFC ,但在内mingw 它是 0x81 (0xFFFFFF81)。
我还尝试使用以下代码但没有成功。
SHGetSpecialFolderPath (NULL, appdata, CSIDL_APPDATA, FALSE)
调用返回 FALSE , GetLastError()返回错误代码 3 ( ERROR_PATH_NOT_FOUND )。
从 mingw shell中运行给定程序时,是否有一些我不想设置的内容?