De C++, comme pour un moment d'écrire ces lignes, Microsoft encourage à utiliser SHGetKnownFolderPath
avec la valeur désirée de KNOWNFOLDERID
enum.La valeur que vous devez utiliser est FOLDERID_CommonStartMenu
. Dans votre cas, le code ressemblerait à ceci:
wchar_t * path = nullptr;
const auto result = SHGetKnownFolderPath(FOLDERID_CommonStartMenu, 0, NULL, &path);
if (S_OK == result)
{
// do what you want with path, f.ex. create string from it
std::wstring pathAsString(path);
// according to documentation, calling process is responsible for freeing this resource
CoTaskMemFree(path);
}
Référence du SHGetKnownFolderPath
est là:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188(v=vs.85).aspx
référence de toutes les valeurs disponibles ENUM KNOWNFOLDERID
est là:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs.85).aspx
Info, ce processus d'appel est responsable de la libération des ressources, peut être trouvé dans la documentation de SHGetKnownFolderPath
en partie documentant le paramètre ppszPath
.
Veuillez noter que, lors de son exécution à partir du service, certaines valeurs ne sont pas disponibles (par exemple en relation avec les données de l'utilisateur, par exemple FOLDERID_Documents
). De plus, si certaines valeurs ne sont pas disponibles si vous utilisez une architecture différente (par exemple, la valeur associée à FOLDERID_ProgramFilesX64
n'est pas disponible sur le système d'exploitation 32 bits).
Si quelqu'un veut savoir où Microsoft encourage à utiliser SHGetKnownFolderPath
au lieu d'autres fonctions disponibles, veuillez lire le début de la documentation de SHGetFolderPath
obsolète.
Le mérite revient à Brian R. Bondy; il a répondu à la question comme je l'ai formulée. J'ai fini par créer un dossier nommé "Démarrage" sous "Menu Programmes de l'utilisateur" (Affichage> Système de fichiers). Et je me suis appuyé sur l'utilisateur d'installer le programme avec "Installer ... pour vous, ou pour toute personne qui utilise cet ordinateur" mis à "Tout le monde". Si l'utilisateur a sélectionné "Just me", il n'a été placé que dans le menu de démarrage de cet utilisateur. Et je suppose que je suis d'accord avec ça. Je suppose que j'ai * pu * avoir copié un raccourci dans une action personnalisée en utilisant la méthode de Brian ... – fre0n