22

C:\Users\<username>\AppData\Localを使用してフォルダーパスを取得しようとしています

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

C# Windows サービスで、しかしそれは他のパスを返します

C:\Windows\ServiceProfiles\LocalService\AppData\Local

正しく行う方法はありますか?

4

2 に答える 2

9

ユーザーアカウントでサービスを実行していますか?そうでない場合、サービスは表示されているように独自のプロファイルを使用します。このサービスがユーザーによって「ログイン」されている場合は、フォルダーをサービスに渡し、ローカルチェックをバイパスできます。それ以外の場合は、ユーザーアカウントでサービスを実行してみてください(またはアカウントを作成してください)。

于 2012-06-26T05:47:41.203 に答える
3

各ユーザーの 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;
于 2014-03-25T00:54:19.547 に答える