Accès par programme à tous les utilisateurs Menu Démarrer
Personne ne sait comment accéder par programmation à l' "Tous les Utilisateurs" du Menu de Démarrage?
Dans XP, trouve ici:
C:\Documents and Settings\All Users\Start Menu\Programs\Startup
Et Windows 7, qui se trouve ici:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
Plus précisément, j'ai une Configuration et de Déploiement du projet, et j'aimerais mettre un raccourci vers l'application dans le menu de Démarrage pour tous les utilisateurs, de sorte que la demande est de commencer à chaque fois que quelqu'un se connecte.
EDIT: Je suis sûr que c'est là que Brian a obtenu sa réponse.
source d'informationauteur fre0n | 2010-02-24
Vous devez vous connecter pour publier un commentaire.
Il n'existe pas de constante définie de la manière normale de
Environment.GetFolderPath
pour tous les utilisateurs du menu démarrer, mais vous pouvez le faire de cette façon, en utilisant l'API Win32SHGetSpecialFolderPath
:.NET 4
CommonStartMenu
a été ajouté à lade l'Environnement.SpecialFolder
enumde sorte que vous pouvez utiliser:"Tous les Utilisateurs" réside dans le ALLUSERSPROFILE variable d'environnement:
Vous pouvez également essayer!
Vous pouvez accéder au dossier de démarrage à l'aide de la propriété MSI (voir ici pour plus de détails):
[StartupFolder
]Cependant, comme typique de fonction de l'utilisateur MSI variables, cette propriété de points, soit à l'utilisateur du dossier de démarrage ou de tous les utilisateurs dossier de démarrage, en fonction de la valeur de la propriété ALLUSERS.
Cela signifie que lorsque vous installez pour "tout le monde" (par ordinateur), vous obtiendrez le dossier
sinon vous allez le dossier de l'utilisateur dans le profil de l'utilisateur. C'est par la conception et aussi de sens, comme une installation par utilisateur n'aura pas l'autorisation d'écrire dans le dossier tous les utilisateurs.
Dans votre de Configuration et de Déploiement projet, procédez comme suit pour placer les fichiers dans le dossier de démarrage:
[StartupFolder]
À partir de C++, comme pour l'écriture de ce document, Microsoft encourage à utiliser
SHGetKnownFolderPath
avec la valeur désirée deKNOWNFOLDERID
enum. La valeur que vous devez utiliser estFOLDERID_CommonStartMenu
. Dans votre cas, le code devrait ressembler à:De référence de
SHGetKnownFolderPath
est là:https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188(v=vs. 85).aspx
De référence de toutes les valeurs de l'enum
KNOWNFOLDERID
est là:https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs. 85).aspx
Info, que le processus appelant est responsable de la libération des ressources, peuvent être trouvées dans la documentation de
SHGetKnownFolderPath
dans la partie documentationppszPath
paramètre.Veuillez noter que, lorsqu'il est exécuté à partir d'un service, certaines valeurs ne sont pas disponibles (par exemple en ce qui concerne les données de l'utilisateur, f.ex.
FOLDERID_Documents
). En outre, si certaines valeurs ne sont pas disponibles si vous utilisez différentes de l'architecture (f.ex. la valeur liée à laFOLDERID_ProgramFilesX64
n'est pas disponible sur le système d'exploitation 32 bits).Si quelqu'un est disposé à savoir où Microsoft encourage à utiliser
SHGetKnownFolderPath
à la place des autres fonctions disponibles, veuillez lire attentivement le haut de la documentation obsolèteSHGetFolderPath
.