如上所述,我该如何使用C语言在Windows中获取AppData文件夹?
我知道在C#中可以使用Environment.SpecialFolder.ApplicationData
。
#include <stdlib.h>
getenv("APPDATA");
编辑:刚刚核对过,运行正常!
SHGetKnownFolderPath
将始终为您提供路径。 - Joey%APPDATA%
环境变量通常会起到作用。但是,如果您想按照官方的Windows方式进行操作,您应该使用SHGetFolderPath
函数,传递CSIDL_APPDATA
或CSIDL_LOCAL_APPDATA
的值,具体取决于您的需求。Environment.GetFolderPath()
方法所使用的内容。
编辑: Joey正确指出,在Windows Vista中,这已被SHGetKnownFolderPath所替代。这对我来说是个好消息 :-)。来自MSDN的示例代码:
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL,
CSIDL_APPDATA | CSIDL_FLAG_CREATE,
NULL,
0,
szPath)))
{
PathAppend(szPath, TEXT("MySettings.xml"));
HANDLE hFile = CreateFile(szPath, ...);
}
CSIDL_APPDATA = 用户名\Application Data。在Windows 10中为:用户名\AppData\Roaming
CSIDL_FLAG_CREATE = 与CSIDL_值结合使用,以在SHGetFolderPath()中强制创建文件夹
您还可以使用:
CSIDL_LOCAL_APPDATA = 用户名\Local Settings\Application Data(非漫游)
您可以使用这些函数:
#include <stdlib.h>
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
像这样:
#include <stdio.h>
char *appData = getenv("AppData");
printf("%s\n", appData);
SHGetKnownFolderPath
每次都会给您路径。 - Joey