2013-05-25 3 views
5

J'utilise C# .NET 4 avec VS 2010.Comment puis-je accéder au dossier "Documents and Settings"?

lorsque vous parcourez des chemins, je suis en cours d'exécution de cette ligne:

files = Directory.GetFiles(path, searchPattern); 

je reçois une exception lorsque le chemin est les documents et paramètres dossier. Comment puis-je y accéder? Et non, je ne veux pas sauter le dossier avec un essai et attraper. Je veux pouvoir y accéder d'une manière ou d'une autre.

Modifier: J'ai une question de suivi. Comme je vous l'ai dit, je suis en train de parcourir les sentiers. Existe-t-il un moyen d'utiliser Environment.GetFolderPath mais en identifiant le dossier speical correct en fonction du chemin que je vérifie actuellement?

Répondre

4

Vous devez utiliser comme cette

var mydocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

Pour avoir accès au dossier MyDocuments.

+0

J'ai édité ma question pour ajouter une question de suivi si vous connaissez la réponse à cette question. –

+0

vous pouvez très bien égaler le chemin que vous avez avec ce 'Environment.GetFolderPath (...)' et si cela correspond, vous pouvez continuer sinon vous pouvez juste appeler 'Continue' dans la construction en boucle. – Saravanan

+0

Je voulais dire quelque chose automatiquement. quelque chose comme (pseudo-code): Dossier SpeicalFolder = Environment.GetSpeicalFolderByFullPath (chemin); –

4

De Environment.SpecialFolder

Le système des dossiers spéciaux sont des dossiers tels que Program Files, programmes, système ou de démarrage, qui contiennent des informations communes. Les dossiers spéciaux sont définis par défaut par le système ou explicitement par l'utilisateur lors de l'installation d'une version de Windows.

La méthode GetFolderPath renvoie les emplacements associés à cette énumération . Les emplacements de ces dossiers peuvent avoir des valeurs différentes sur différents systèmes d'exploitation, l'utilisateur peut modifier certains des emplacements et les emplacements sont localisés.

Il suffit d'utiliser

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
files = Directory.GetFiles(path, searchPattern); 

Dans mon ordinateur, il retourne comme C:\Users\Soner\Documents

Y at-il un moyen d'utiliser Environment.GetFolderPath mais idetifying en quelque sorte le dossier speical correct selon le chemin Je suis actuellement vérification?

Puisque SpecialFolder est de type enum, vous pouvez itérer leurs valeurs dans une boucle. Voici à quoi ça ressemble

public enum SpecialFolder 
{ 
    AdminTools = 0x30, 
    ApplicationData = 0x1a, 
    CDBurning = 0x3b, 
    CommonAdminTools = 0x2f, 
    CommonApplicationData = 0x23, 
    CommonDesktopDirectory = 0x19, 
    CommonDocuments = 0x2e, 
    CommonMusic = 0x35, 
    CommonOemLinks = 0x3a, 
    CommonPictures = 0x36, 
    CommonProgramFiles = 0x2b, 
    CommonProgramFilesX86 = 0x2c, 
    CommonPrograms = 0x17, 
    CommonStartMenu = 0x16, 
    CommonStartup = 0x18, 
    CommonTemplates = 0x2d, 
    CommonVideos = 0x37, 
    Cookies = 0x21, 
    Desktop = 0, 
    DesktopDirectory = 0x10, 
    Favorites = 6, 
    Fonts = 20, 
    History = 0x22, 
    InternetCache = 0x20, 
    LocalApplicationData = 0x1c, 
    LocalizedResources = 0x39, 
    MyComputer = 0x11, 
    MyDocuments = 5, 
    MyMusic = 13, 
    MyPictures = 0x27, 
    MyVideos = 14, 
    NetworkShortcuts = 0x13, 
    Personal = 5, 
    PrinterShortcuts = 0x1b, 
    ProgramFiles = 0x26, 
    ProgramFilesX86 = 0x2a, 
    Programs = 2, 
    Recent = 8, 
    Resources = 0x38, 
    SendTo = 9, 
    StartMenu = 11, 
    Startup = 7, 
    System = 0x25, 
    SystemX86 = 0x29, 
    Templates = 0x15, 
    UserProfile = 40, 
    Windows = 0x24 
} 
+0

J'ai édité ma question pour ajouter une question de suivi si vous connaissez la réponse à cette question également. –

+0

@YonatanNir Mis à jour. –

+0

Existe-t-il un moyen de le faire automatiquement? Quelque chose comme (pseudo-code): dossier SpeicalFolder = Environment.GetSpeicalFolderByFullPath (chemin); Aussi, il y a quelque chose que je ne comprends pas. Le chemin d'accès et l'exception sont C: \\ Documents and Settings et le chemin qui m'a été donné par l'environnement est C: \\ Users \\ Yonatan \\ Documents. Comment est-ce que je peux comparer les chemins pendant l'exécution pour savoir que le chemin qui a jeté une exception était en fait censé être l'autre chemin spécial? Je ne peux pas simplement faire si (chemin == "C: \\ Documents and Settings") car il pourrait changer entre différents ordinateurs. –

0

Vous pouvez définir le programme pour que vous puissiez uniquement exécuter en tant qu'administrateur.

Dans Visual Studio:

Faites un clic droit sur le projet -> Propriétés -> Sécurité -> Activer la sécurité ClickOnce

Une fois que vous avez cliqué sur ce, un fichier sera créé sous dossier appelé application des propriétés du projet.manifeste une fois cela créé, vous pouvez décocher l'option Activer ClickOnce option Paramètres de sécurité

Ouvrir ce fichier et changer cette ligne:

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

à:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

Cela fera l'administrateur exige le programme privilèges, et il vous garantira l'accès à ce dossier.

+0

Cela n'a pas fonctionné –

Questions connexes