LocalSystemアカウントを使用する標準のWindowsサービスを作成しました。ログファイルの場合、テキストライターを使用して、C:\ Users\useraccountディレクトリ内の指定されたファイルに書き込みます。問題は、LocalSystemでサービスとして実行しているときに、ファイルを作成したり、ファイルに書き込んだりすることをまったく望まないことです。
string dir = @"C:\Users\useraccount\log.txt";
StreamWriter sw = File.AppendText(dir);
ご覧のとおり、ディレクトリはハードコーディングされているため、LocalSystemがSystem32またはそのような性質で起動するため、ベースディレクトリの競合は発生しません。フォルダーのアクセス許可により、システムアカウントはフォルダーに完全にアクセスできます(Windows 7)。なぜそのファイルを作成/書き込みできないのですか?
ご入力いただきありがとうございます。
編集:
どうやら、ロギングプログラムスレッドはLocalSystemとしても実行されているようですが、実際に標準ユーザーとして実行する必要がある場合です。では、サービスからスレッド化されたプロセスを実行して、LocalSystemではなくローカルユーザーアカウントで実行するにはどうすればよいですか。
Thread.new(process)を使用します。ここで、processは追加のプログラムです。プロセスプログラムは、何かを書き込む前に入力を受け取る必要がありますが、アカウントが間違っているため、入力を受け取っていません。これをどのように修正しますか?