0

私は.Net、C#、およびVisualStudioを初めて使用します。ここで、c#を使用してWindowsサービスアプリケーションを開発したいと思います。Windowsサービスは、いくつかのデータをいくつかのファイルに書き込む必要があります。VisualStudio2010を使用しています。オペレーティングシステムとしてWindowsXPを使用しています。Windowsservice.itsインストーラーなどを作成しました。

デフォルト以外のフォルダー(cドライブ以外)以外のフォルダーにWindowsサービスをインストールすると、サービスを実行した後、ファイルが作成され、テキストファイルが正常に書き込まれます。

デフォルトの場所にサービスをインストールする場合(インストール時にデフォルトのパスを使用できない場合)(添付の画像を参照してください)

ここに画像の説明を入力してください

インストール後、サービスを実行しますが、ファイルは作成されず、例外はスローされません。以下は、ファイルのコーディングスニペットです。

string logPath = AppDomain.CurrentDomain.BaseDirectory + "log \ CastrolSdWindowsService_Log.txt";

fs = new FileStream(logPath, FileMode.Append, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();

ファイルがcドライブに作成されない理由がわかりません。私を助けてくださいすべての人があなたのアイデアを与えることを歓迎します。

.netとc#は初めてなので、技術用語の間違いでごめんなさい。正しい用語がわかりません。

4

2 に答える 2

1

コメントに記載されているように、Program Filesディレクトリはオペレーティングシステムによって保護されるため、アプリケーションで生成されたファイルを配置するのに理想的な場所ではありません。これらのファイルを保存するのに最適な場所は、アプリケーションデータフォルダーです。.net Frameworkには、 Environmentクラスを利用し、Environment.SpecialFolder列挙の1つを使用してフォルダーへのパスを取得することにより、フォルダーを動的に見つけるのに役立ついくつかのヘルパーメソッドがあります。

于 2012-07-17T14:30:01.627 に答える
0

(上記のように)ログファイルへのパスを変更して保護されたプログラムファイルフォルダーの外に移動するか、NTFSアクセス許可を変更して、「プログラムファイル」内に書き込みたいログファイルとフォルダーの書き込み/変更を許可するかを選択できます。 / yourapp"フォルダ。

WindowsサービスアプリケーションがSYSTEMとして実行されていないことに注意してください。NT AUTHORITY \LOCALSERVICEまたはNTAUTHORITY\ NETWORK SERVICEの場合があります。サービスを実行してからProcessExplorerを実行し、[USER]列をオンにして確認します。

于 2012-07-17T19:24:48.227 に答える