Windowsサービスを作成しました。Windowsインストーラーを使用してサービスのセットアップを行います。設定ファイルのような1つのXMLファイルがあります。デバッグプロジェクトをアタッチしてWindowsサービスをデバッグするときはいつでも、正常に動作します。しかし、インストール後、C:\ Windows\system32にexample.xmlファイルが見つからなかったというイベントが表示されます。それは繰り返しの問題です。誰かがこれで何が起こっているのか教えてもらえますか?または何か提案はありますか?
1697 次
4 に答える
2
ほとんどの場合、ファイルは探している場所ではありません。
VSでのデバッグ中はアプリケーションと同じですが、サービスとして開始する場合/コマンドラインから開始する場合は異なる「現在の作業フォルダー」でコードが検索される可能性があります。
コードがファイルを期待する場所(つまり、アプリケーションの隣)からロードすることを確認しますが、相対パス( "myfile.xml"など)からはロードしないようにします。
于 2013-03-14T19:57:18.113 に答える
2
これはインストーラーの問題ではありません。Windowsサービスは、常にSystem32を現在のディレクトリとして開始されます。サービスを起動する前に、この行をProgram.csのMain()メソッドに追加します。
Environment.CurrentDirectory = new FileInfo(Assembly.GetExecutingAssembly().FullName).DirectoryName;
于 2013-03-14T20:20:59.630 に答える
1
なぜWindowsフォルダに保存するのですか?そうする本当に正当な理由がない限り、これは悪いことです。アプリが実行されているのと同じ場所に構成をインストールし、次のファイルパスを取得します。
var folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var configPath = Path.Combine(folderPath, configFileName);
于 2013-03-14T20:20:35.810 に答える
-1
問題は、サービスが管理者として実行されていないことです。サービスが管理者として実行されていない場合、system32フォルダーの下のファイルを読み取ることはできません。
管理者として実行するようにサービスプロパティを変更します。これで問題は解決するはずです。
于 2013-03-14T19:57:42.283 に答える