Je crée un nouveau raccourci dans le menu Démarrer et le met à jour dans le menu Démarrer J'ai travaillé avec la variable d'environnement spécial ALLUSERSPROFILE et cela a fonctionné pour moi sous XP, il renvoie le bon chemin, lors de l'utilisation sous vista ir renvoie c: \ ProgramData qui est inutile. La lecture de la variable d'environnement StartMenu est également inutile car elle renvoie une chaîne vide. (Sur Vista, il se trouve sous Windows \ Menu Démarrer, en anglais, et si le dossier d'installation Windows a le nom par défaut) Est-ce que quelqu'un a une idée comment obtenir le répertoire startmenu pour le «Tous les utilisateurs» et serait-ce un ?. solution générique qui fonctionne sous XP et VistaAtteindre le menu Démarrer sous Windows Vista et 7
Répondre
vous voulez CSIDL_COMMON_STARTMENU
Cela ne semble pas être définie dans l'énumération Environment.SpecialFolders
, mais vous pouvez utiliser le Win32 API via P/Invoke:
[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner,
[Out] StringBuilder lpszPath, int nFolder, bool fCreate);
int CSIDL_COMMON_STARTMENU = 0x16;
StringBuilder path = new StringBuilder(260);
SHGetSpecialFolderPath(IntPtr.Zero, path, CSIDL_COMMON_STARTMENU, false);
CSIDL_COMMON_STARTMENU (FOLDERID_CommonStartMenu) Le répertoire du système de fichiers qui contient les programmes et les dossiers qui apparaissent dans le menu Démarrer pour tous les utilisateurs . Un chemin typique est C: \ Documents et Settings \ All Users \ Start Menu. Valable uniquement pour les systèmes Windows NT.
regardant sous le registre que j'ai trouvé la clé suivante HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders il y a une valeur nommée Menu Démarrer commune qui contient le chemin. Il fonctionne sur Vista et XP
Ne le lisez pas du registre. Utilisez des API documentées à la place. Ces valeurs ne sont pas créées avant l'appel de certaines API Shell.Vous découvrirez cela si vous démarrez à partir d'une nouvelle installation de Windows et ajoutez la restauration du système à votre processus de test. –
Il n'y a pas d'API Win32 nécessaire et aucun accès au registre manuellement. J'utilise Microsoft Framework 4.0 et peut faire ce qui suit avec succès sous Win7 et XP:
Dim diStartMenu As New IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu))
fiShortCut = New IO.FileInfo(IO.Path.Combine(diStartMenu.FullName, ApplicationTitle & ".lnk"))
ce retourne le chemin suivant pour diStartMenu:
C:\ProgramData\Microsoft\Windows\Start Menu
cette corresponse pleinement avec la valeur de registre dans
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
- 1. TortoiseGit Fail installer le menu contextuel sous Windows 7
- 2. Développement d'applications .NET sous Windows 7 pour XP/Vista
- 3. Remplacement du menu Démarrer
- 4. Comment obtenir des catégories de panneau de contrôle (groupes) sous Windows Vista et Windows 7
- 5. OpenGL: élastiques dans Windows Vista/7
- 6. Erreur d'accès sous Windows 7
- 7. Comprendre le contrôle de compte Windows Vista/7
- 8. Menu Missing Right Click dans Windows 7
- 9. Comment utiliser le bureau sécurisé sous Windows Vista et W7?
- 10. Raccourci indésirable affiché dans le menu Démarrer Programmes ouverts récents dans Windows 7
- 11. Développement de gadgets Windows (Vista/7)
- 12. API Windows pour VISTA, 7 & Beyond
- 13. Enregistrer le fichier sur le bureau sous Vista/Windows 7 dans .NET 2.0
- 14. Démarrer le répertoire dans Windows Explorer sous Vista n'est pas configuré correctement?
- 15. Credential manager pour Vista/Windows 7
- 16. Windows Vista/7 Connectez-vous par programme
- 17. Comment créer par programme une association de fichiers fonctionnant sous XP, Vista et Windows 7
- 18. Différences entre la programmation des gadgets sous Vista et Windows 7?
- 19. Démarrer le service en mode noyau (Vista)
- 20. Comment réparer l'aide de l'info-bulle dans les applications Windows Forms sous Windows 7/Vista?
- 21. La fonction GetAdaptersInfo (C++) ne fonctionne pas sous Vista et Windows 7
- 22. Où se trouve le BCD dans windows vista/7?
- 23. Ressources pour le développement d'applications .NET pour Windows Vista/7?
- 24. Comment démarrer le service SOAP sur Windows Phone 7?
- 25. Obtenir le client Oracle pour travailler sous Windows 7 RC
- 26. Comment concevoir une application de démarrage automatique exécutée en tant qu'administrateur sous Windows Vista/7?
- 27. Est-ce qu'une fenêtre QT peut être complètement stylée, y compris la barre de menu sous Windows 7 ou Vista?
- 28. EnumServicesStatus et Windows 7
- 29. Comportement FolderBrowserDialog sous Windows 7
- 30. WCF sous Windows 7 ne fonctionne pas
IS est seulement valide pour Systèmes NT? – jmayor
@jmayor: Oui. Êtes-vous préoccupé par Windows 98? – SLaks
@jmayor: "Windows NT" est généralement utilisé dans MSDN pour désigner les systèmes d'exploitation "NT-lineage" (NT, 2k, XP, Vista, 7), par opposition à Windows "classique" (3.1, 95, 98, Me). –