C:\Users\<username>\AppData\Local
を使用してフォルダーパスを取得しようとしています
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
C# Windows サービスで、しかしそれは他のパスを返します
C:\Windows\ServiceProfiles\LocalService\AppData\Local
正しく行う方法はありますか?
C:\Users\<username>\AppData\Local
を使用してフォルダーパスを取得しようとしています
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
C# Windows サービスで、しかしそれは他のパスを返します
C:\Windows\ServiceProfiles\LocalService\AppData\Local
正しく行う方法はありますか?
ユーザーアカウントでサービスを実行していますか?そうでない場合、サービスは表示されているように独自のプロファイルを使用します。このサービスがユーザーによって「ログイン」されている場合は、フォルダーをサービスに渡し、ローカルチェックをバイパスできます。それ以外の場合は、ユーザーアカウントでサービスを実行してみてください(またはアカウントを作成してください)。
各ユーザーの AppData フォルダーは、レジストリに格納されます。
このパスを使用:
const string regKeyFolders = @"HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders";
const string regValueAppData = @"AppData";
ユーザーの sid を含む変数 sid 文字列を指定すると、次のように AppData パスを取得できます。
string path=Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string;