I'm currently using:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
To retrieve current user's AppData\Local
path. The program requires elevated privileges and running it under standard user session throws a prompt requiring administrator's login credentials. Logging as an administrator (different user) apparently changes active user for the program. The returned folder path is thus administrator's and not the one the standard user uses.
Expected result:
C:\Users\StandardUser\AppData\Local
Actual result:
C:\Users\Administrator\AppData\Local
Is there a way to get AppData\Local path of specific user? Getting logged user name or credentials is not an issue compared to getting the path for arbitrary user. The application is WPF based and its required privileges are set in manifest file by requestedEcecutionLevel (requireAdministrator)
.
To get that information for another user, you'll need to know that user username/password, as is explained in this question.
So I'd like to throw an alternative solution:
1.- Instead of using the
requestedExecutionLevel
for the aplication, remove it and run it as the logged user. That way you'll have access to the special folders path easily and may log it.2.- Restart your application as Administrator.
Sample code (in App.xaml.cs):
This sample code is for a WPF Application, but could be done the same in a winforms Application.
Reference: UAC Self Elevation