2016-07-28 22 views
2

ich zur Zeit mit diesem:AppData-Ordner des Benutzers, die Anwendung läuft

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

dem AppData-Ordner des angemeldeten Benutzers des Zugriff auf das Ergebnis ein Weg ist wie folgt:.

"C:\\Documents and Settings\\Michael\\Application Data" 

Aber: Um das Programm auf einem anderen Benutzer ausgeführt, beginne ich einen neuen Prozess wie folgt aus:

try {  
    var processInfo = new ProcessStartInfo() { 
     FileName = System.Reflection.Assembly.GetExecutingAssembly().Location, 
     UserName = txtWinLoginUsername.Text, 
     Password = txtWinLoginPassword.SecurePassword, 
     Domain = this.domain, 
     UseShellExecute = false, //kein Plan 
    }; 
    //start program 
    Process.Start(processInfo); //execute 
    Application.Current.MainWindow.Close(); //close current Window if it worked 
} catch { 
    //Windows login failed //reset PasswordBox etc. 
} 

und töten Sie die aktuelle.

Also, was ich will, ist der neue Ordner AppData aber die AppData Anruf Ergebnisse in dem Standard ein:

"C:\\Documents and Settings\\Default\\Application Data" 

Was ich brauche sind die Anwendungsdaten des Benutzers des Fadens in meinem Programm funktioniert. UND ich mag es nicht so etwas wie Substring verwenden (Nur wenn ich

+0

Hat sich der Benutzer jemals zuvor bei diesem Computer angemeldet? Wenn nicht, dann haben sie noch keinen Ordner. Haben Sie auch versucht, 'LoadUserProfile = true' in Ihrem' ProcessStartInfo' Objekt zu setzen? – DavidG

+0

'System.IO.Path.GetPathRoot (Environment.GetFolderPath (Environment.SpecialFolder.System)) +" ProgramData "' wie "C: \ ProgramData" kann von anderem Benutzer nicht zugegriffen werden. Wie kann ich es beheben – Michael1248

+0

Sie stellen jetzt andere Fragen. – DavidG

Antwort

1

Sie müssen :) müssen gesetzt LoadUserProfile = true in Ihrem ProcessStartInfo sonst die Benutzer-Profile nicht verfügbar:

var processInfo = new ProcessStartInfo 
{ 
    FileName = System.Reflection.Assembly.GetExecutingAssembly().Location, 
    UserName = txtWinLoginUsername.Text, 
    Password = txtWinLoginPassword.SecurePassword, 
    Domain = this.domain, 
    UseShellExecute = false, //kein Plan 
    LoadUserProfile = true 
    //^^^^^^^^^^^^^^^^^^^^ 
    //Add this line 
};