如何在 Windows 上的“开始”菜单中使用文件夹创建快捷方式

How do I create a Shortcut with a folder in the Start Menu on Windows

到目前为止,我可以在开始菜单中创建一个快捷方式,这是结果:

我想用一个文件夹创建这个快捷方式,这个文件夹在开始菜单中,就像这样:

我该怎么办?

这是我的代码:

void CreateShort(CString strApp, char* pcLnk) 
{
    HRESULT hr = CoInitialize(NULL);
    if(SUCCEEDED(hr))
    {
        IShellLink *pisl;
        hr = CoCreateInstance(CLSID_ShellLink, NULL,
        CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pisl);
        if(SUCCEEDED(hr))
        {
            IPersistFile* pIPF;
            pisl->SetPath(strApp);          
            hr = pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF);

            if(SUCCEEDED(hr))
            {
                USES_CONVERSION;
                LPCOLESTR lpOlestr = A2COLE(pcLnk);
                hr = pIPF->Save(lpOlestr, FALSE);

                if (SUCCEEDED(hr))
                {
                }
                else
                {
                    DWORD dw = GetLastError();
                    AfxMessageBox(dw);
                }
                pIPF->Release();
            }
            pisl->Release();
        }
    }
    CoUninitialize();
}

更新:我在调用我的函数时添加了这段代码:

SHGetSpecialFolderPathA(NULL, szStartPath, CSIDL_COMMON_PROGRAMS, 0); 
CString path = CString(szStartPath);
SHCreateDirectory(NULL,path)
strcat_s(szStartPath, MAX_PATH, "\myapp\");
strcat_s(szStartPath, MAX_PATH, m_acAppName);
CreateShort(m_strSetupDir, szStartPath);

只需在开始菜单的“程序”组文件夹(您可以使用 SHGetFolderPath(CSIDL_[COMMON_]PROGRAMS)SHGetKnownFolderPath(FOLDERID_[Common]Programs) 找到)下的文件系统上创建一个常规子文件夹,然后您就可以创建您的子文件夹中的文件快捷方式。