7
votes

Comment accéder au dossier "Documents et paramètres"?

J'utilise c # .NET 4 avec vs 2010.

Lors de l'itération sur certains chemins, je passe cette ligne: xxx

i obtenir une exception Lorsque le chemin est le dossier Documents et paramètres. 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 en quelque sorte.

Edit: J'ai eu une question de suivi. Comme je vous l'ai dit, je suis itération sur les chemins. Existe-t-il un moyen d'utiliser environnement.gefolderPath mais d'une manière d'une manière d'une manière ou d'une autre manière, de l'idédification du dossier speical correct en fonction du chemin Je vérifie actuellement?


0 commentaires

3 Réponses :


10
votes

Vous devez utiliser comme celui-ci xxx

pour accéder au dossier myDocuments .


7 commentaires

J'ai édité ma question pour ajouter une question de suivi si vous pouvez également connaître la réponse à cela.


Vous pouvez très bien assimiler le chemin que vous avez avec ce Environnement.GetFolderDePath (...) et si correspondé, vous pouvez continuer, sinon vous pouvez simplement appeler continuer dans le Construction en boucle.


Je voulais dire quelque chose automatiquement. Quelque chose comme (pseudo code): dossier SpeicalDeFolder = environnement.getspeicalderbybybyPath (chemin);


Non .. Environnement.GetFolderDepath ne prend que l'énumération en tant que chemin. Pas une chaîne.


Je voudrais vous suggérer ce qui suit. Pendant le démarrage de l'application, vous pouvez simplement mettre en cache le chemin complet de tous les dossiers spéciaux, puis les vérifier pendant l'exécution. Faites-moi savoir si cela irait bien pour votre condition.


Il y a quelque chose que je ne comprends pas. Le chemin qui a jeté et exception est C: \\ Documents et paramètres et le chemin qui m'a été donné par l'environnement est C: \\ utilisateurs \\ Yonatan \\ Documents. Comment puis-je comparer les chemins pendant l'exécution pour savoir que le chemin qui a lancé une exception était en fait censé être l'autre chemin spécial? Je ne peux pas simplement faire si (chemin == "c: \\ documents et paramètres") car cela pourrait changer entre différents ordinateurs.


Veuillez noter que le chemin qui contient les documents et les paramètres concerne Windows XP et les Utilisateurs \ ... appartient à Windows 7 et plus, Vista aussi je suppose. Donc, vous devriez également vérifier pour le osversion aussi je suppose.



5
votes

de environnement.Specialfolder code>

Les dossiers spéciaux système sont des dossiers tels que des fichiers de programme, Programmes, systèmes ou startups contenant des informations communes. Les dossiers spéciaux sont définis par défaut par le système, ou explicitement par le utilisateur, lors de l'installation d'une version de Windows. P>

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 changer une partie de la les emplacements et les emplacements sont localisés. P> BlockQuote>

Utilisez simplement P>

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
}


2 commentaires

J'ai édité ma question pour ajouter une question de suivi si vous pouvez également connaître la réponse à cela.


Y a-t-il un moyen de le faire automatiquement? Quelque chose comme (pseudo code): dossier SpeicalDeFolder = environnement.getspeicalderbybybyPath (chemin); En outre, il y a quelque chose que je ne comprends pas. Le chemin qui a jeté et exception est C: \\ Documents et paramètres et le chemin qui m'a été donné par l'environnement est C: \\ utilisateurs \\ Yonatan \\ Documents. Comment puis-je comparer les chemins pendant l'exécution pour savoir que le chemin qui a lancé une exception était en fait censé être l'autre chemin spécial? Je ne peux pas simplement faire si (chemin == "c: \\ documents et paramètres") car cela pourrait changer entre différents ordinateurs.



0
votes

Vous pouvez définir le programme afin que vous ne puissiez fonctionner que comme administrateur.

dans Visual Studio:

Cliquez avec le bouton droit de la souris sur le projet -> Propriétés -> Sécurité -> Activer ClickOnce Security

Après avoir cliqué dessus, un fichier sera créé dans le dossier Propriétés du projet appelé app.Manifest une fois que ceci est créé, vous pouvez décocher l'option Activer ClickOncepe Security Paramètres

Ouvrir ce fichier et modifier cette ligne. : xxx

à: xxx

Ceci fera le programme nécessitera des privilèges d'administrateur, et cela garantira que vous avez accès à ce dossier.


0 commentaires