2009-12-11 20 views
2

Sous Windows Vista, le dossier spécial "Documents partagés" contient des documents accessibles par tous les utilisateurs de la machine. Ce dossier a été renommé en "Documents publics" dans Windows 7.Comment trouver le chemin du dossier "Documents partagés" de C#?

Comment puis-je trouver son chemin physique à partir de C#?

Notez que Environment.GetFolderPath(Environment.SpecialFolder.xxx) ne possède pas le dossier que je recherche.

+0

trouvé cette astuce (il recherche dans le Registre): http://social.msdn.microsoft.com/Forums/en-SG/csharpgeneral/thread/86ce30d2-a679-4e6e-9ed2-42ad5ffe886c – Nestor

Répondre

4
Path.Combine(Environment.GetEnvironmentVariable("PUBLIC"), "Documents"); 
+0

+1 pour la simplicité –

+2

C'est un gros échec et ne devrait pas être marqué comme la réponse. Vous ne devez PAS coder les noms comme "Documents". – Anders

+0

@Anders "Documents" dans ce cas est un dossier système, quelle est une meilleure alternative, autre que d'utiliser SpecialFolder CommonDocuments qui n'est pas disponible jusqu'à .NET 4.0? –

5

Que pensez-vous de cela?

[DllImport("shell32.dll")] 
static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, 
    uint dwFlags, [Out] StringBuilder pszPath); 

public string GetCommonDocumentsFolder() 
{ 
    int SIDL_COMMON_DOCUMENTS = 0x002e; 
    StringBuilder sb = new StringBuilder(); 
    SHGetFolderPath(IntPtr.Zero,SIDL_COMMON_DOCUMENTS,IntPtr.Zero,0x0000,sb); 
    return SB.ToString(); 
} 

Réponse avec la permission de, euh ..., expert-exchange que nous aimons tous à la haine.

8

Le SpecialFolder enum a eu un grand, et depuis longtemps, mise à jour dans Framework 4 - l'un des nouveaux ajouts est l'élément CommonDocuments.

0
Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments); 

Le répertoire du système de fichiers qui contient des documents qui sont communs à tous les utilisateurs. Ce dossier spécial est valide pour les systèmes Windows NT, Windows 95 et Windows 98 avec Shfolder.dll installé.