gpt4 book ai didi

c - SHGetFolderPath 无论如何都会返回 "C"?

转载 作者:可可西里 更新时间:2023-11-01 09:43:31 27 4
gpt4 key购买 nike

我是 Windows 开发的新手(在 Mac 方面有经验),我正在尝试使用 SHGetFolderPath(因为它与 Windows XP 兼容)来获取当前用户的应用程序数据文件夹的路径。然而,无论我传入什么标志,我每次都会得到“C”的输出路径。我都试过了:

CSIDL_APPDATA

CSIDL_LOCAL_APPDATA

有和没有 CSIDL_FLAG_CREATE 标志。每次结果相同:“C”。我在这里做错了什么?

#include <windows.h> 
#include <shlobj.h> // SHGetFolderPath
#include <stdio.h>
#include <stdlib.h>

//#pragma comment(lib, "shell32.lib")

int main()
{
CHAR path[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_CURRENT, path);

if (result != S_OK)
printf("Error: %d\n", result);
else
printf("Path: %s\n" , path);

printf( "String length: %d\n", strlen(path) );

return 0;
}

SHGetFolderPath 的文档: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181(v=vs.85).aspx

最佳答案

您正在为 Unicode 编译但传递了一个 ANSI 缓冲区。您的实际代码有一个您没有向我们展示的类型转换。要么传递 wchar_t 缓冲区并使用匹配的打印例程,要么调用该函数的 ANSI 版本 SHGetFolderPathA。

关于c - SHGetFolderPath 无论如何都会返回 "C"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8040456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com