2017-02-08 6 views
0

Ich muss Dateien von C:\ProgramData\Microsoft\Windows\Start Menu\Programs und seinen Unterordnern abrufen.Wie kann ich auf den Startmenüpfad zugreifen?

Ich versuche, sie so zu erhalten:

string path = @"C:\ProgramData\Microsoft\Windows\Start Menu\"; 
string[] lnks = Directory.GetFiles(path, "*.lnk", SearchOption.AllDirectories);` 

Aber es mir einen Fehler geben:

An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll Access denied to the path : 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs' 

Und das ist, was ich versuchte, den Zugriff auf diesen Pfad zu erhalten;

<requestedExecutionLevel level="highestAvailable" uiAccess="false" /> to the app.manifest 

File.GetAccessControl(path); in Codes

Starten von Visual Studio als Admin

Keiner von ihnen arbeitete. Wie kann ich diese Dateien von diesem Pfad bekommen?

+0

können Sie nicht den Pfad ändern und setzen Dateien in einem anderen Ordner, um es mit dem Code zu vermeiden. Am besten geben Sie die Sicherheitsrechte für den Ordner. –

Antwort

1

Das Problem mit diesem Ordner ist das Vorhandensein eines ReparsePoint Ordners mit einem Namen für Ihre Kultur lokalisiert

Directory.GetFiles scheint zum scheitern verurteilt, wenn ein ReparsePoint Ordner zu lesen versuchen, aber Sie können wie diese

string path = @"C:\ProgramData\Microsoft\Windows\Start Menu\"; 
string[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); 
foreach (string s in dirs) 
{ 
    DirectoryInfo di = new DirectoryInfo(s); 
    if (!di.Attributes.HasFlag(FileAttributes.ReparsePoint)) 
    { 
     string[] lnks = Directory.GetFiles(s, "*.lnk", SearchOption.AllDirectories); 
    } 
} 
0

können Sie versuchen, diese

String allusers = Environment.GetEnvironmentVariable ("ALLUSERSPROFILE") + "\ Startmenü \ Programme";

Verwandte Themen