获取Windows上所有用户的开始菜单的路径

bwe*_*ber 0 c++ windows path startmenu

我正在寻找一种方法来检索C++中所有用户开始菜单目录的路径.我只能得到当前用户之一(使用Qt):

QString startMenuPath = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation).at(0);
Run Code Online (Sandbox Code Playgroud)

但是,Qt不允许为所有用户检索一个.据我所知,也没有包含该路径的环境变量,我可以阅读.

the*_*heB 6

要获取已知文件夹,请使用SHGetFolderPath并传递KNOWNFOLDERIDCSIDL为所需文件夹.

例如,以下代码获取所有用户Start MenuPrograms文件夹:

// Remember to #include <Shlobj.h>

WCHAR path[MAX_PATH];

HRESULT hr = SHGetFolderPathW(NULL, CSIDL_COMMON_PROGRAMS, NULL, 0, path);
if (SUCCEEDED(hr))
    std::wcout << L"Start Menu\Programs: " << path << std::endl;

hr = SHGetFolderPathW(NULL, CSIDL_COMMON_STARTMENU, NULL, 0, path);
if (SUCCEEDED(hr))
    std::wcout << L"Start Menu: " << path << std::endl;
Run Code Online (Sandbox Code Playgroud)