2013-05-25 9 views
5

Ich bin mit C# .NET 4 mit VS 2010Wie kann ich auf den Ordner "Dokumente und Einstellungen" zugreifen?

Wenn Iterieren einige Pfade über, ich diese Zeile ausgeführt wird:

files = Directory.GetFiles(path, searchPattern); 

ich eine Ausnahme erhalten, wenn der Pfad der Dokumente und Einstellungen ist Mappe. Wie kann ich darauf zugreifen? Und nein, ich möchte den Ordner nicht mit einem Versuch überspringen und fangen. Ich möchte irgendwie darauf zugreifen können.

Edit: Ich habe eine Follow-up-Frage. Wie ich schon sagte, wiederhole ich die Wege. Gibt es eine Möglichkeit, Environment.GetFolderPath zu verwenden, aber irgendwie den richtigen speical-Ordner entsprechend dem Pfad zu identifizieren, den ich gerade überprüfe?

Antwort

4

Sie haben ähnliche

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

verwenden, um Zugriff auf den MyDocuments Ordner zu erhalten.

+0

Ich habe meine Frage bearbeitet, um eine weitere Frage hinzuzufügen, wenn Sie die Antwort darauf auch wissen sollten. –

+0

können Sie sehr gut den Pfad, den Sie haben, mit diesem 'Environment.GetFolderPath (...) 'gleichsetzen und wenn Sie übereinstimmen, können Sie fortfahren oder Sie können einfach' Continue 'im Schleifenkonstrukt aufrufen. – Saravanan

+0

Ich meinte etwas automatisch. etwas wie (Pseudocode): SpeicalFolder-Ordner = Environment.GetSpeicalFolderByFullPath (Pfad); –

4

Von Environment.SpecialFolder

Das System spezielle Ordner sind Ordner wie Programmdateien, Programme, System oder Startup, die gemeinsame Informationen enthalten. Spezielle Ordner werden standardmäßig vom System oder explizit vom Benutzer festgelegt, wenn eine Windows-Version installiert wird.

Die GetFolderPath-Methode gibt die Positionen zurück, die dieser -Enumeration zugeordnet sind. Die Positionen dieser Ordner können unterschiedliche Werte auf verschiedenen Betriebssystemen haben, der Benutzer kann einige der Standorte ändern, und die Standorte sind lokalisiert.

Verwenden Sie einfach

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

In meinem Computer, gibt es als C:\Users\Soner\Documents

Gibt es eine Möglichkeit Environment.GetFolderPath zu verwenden, aber irgendwie idetifying die richtigen speical Ordner nach dem Weg Ich bin derzeit Überprüfung?

Da SpecialFolder Enumerationstyp ist, können Sie ihre Werte in einer Schleife durchlaufen. Hier, wie es aussieht;

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

Ich habe meine Frage bearbeitet, um eine weitere Frage hinzuzufügen, wenn Sie die Antwort darauf auch wissen sollten. –

+0

@YonatanNir Aktualisiert. –

+0

Gibt es eine Möglichkeit, es automatisch zu tun? Etwas wie (Pseudo-Code): SpeicalFolder-Ordner = Environment.GetSpeicalFolderByFullPath (Pfad); Außerdem gibt es etwas, das ich nicht verstehe. Der Pfad, der die Ausnahme ausgelöst hat, ist C: \\ Dokumente und Einstellungen, und der Pfad, der mir von der Umgebung zugewiesen wurde, lautet C: \\ Benutzer \\ Yonatan \\ Dokumente. Wie kann ich die Pfade während der Laufzeit vergleichen, um zu wissen, dass der Pfad, der eine Ausnahme ausgelöst hat, eigentlich der andere spezielle Pfad sein sollte? Ich kann nicht einfach tun, wenn (Pfad == "C: \\ Dokumente und Einstellungen"), da es zwischen verschiedenen Computern wechseln kann. –

0

Sie können das Programm so einstellen, dass Sie nur als Administrator arbeiten können.

In Visual Studio:

Direkt am Projekt klicken -> Eigenschaften -> Sicherheit -> aktivieren Clickonce-Sicherheit

Nachdem Sie es angeklickt wird, wird eine Datei unter den Eigenschaften des Projekts erstellt werden Ordner app genannt.einmal manifest diese erstellt ist, können Sie die Clickonce-Sicherheitseinstellungen Option

öffnen, die Datei, und ändern Sie diese Zeile aktivieren deaktivieren:

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

an: Administrator

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

Dies wird das Programm erforderlich machen Privilegien, und es wird garantiert, dass Sie Zugriff auf diesen Ordner haben.

+0

Das hat nicht funktioniert –

Verwandte Themen