1

C# で .NET Windows サービスを作成しています。これは、ローカル システム アカウントで実行されています。ただし、このサービスは古い COM コンポーネントを呼び出す必要があります。この古い COM コンポーネントには、マップされたドライブ文字をネットワーク ドライブに使用する多数のファイル アクセスが含まれています (あまり良くありませんが、書き直すことはできません)。この COM コンポーネントもローカル システム アカウントで読み込まれていると想定しているため、これらのドライブ マッピングは存在しないため失敗します。

これを回避する方法は何ですか?これらのマッピングを持つユーザー アカウントで COM コンポーネントを読み込むことはできますか? もしそうなら、どのように?それとももっと良い方法がありますか

ユーザー アカウントで Windows サービス全体を実行すると、問題を回避できますか?

4

2 に答える 2

0

ユーザーが実行するアカウントを指定できる COM+ アプリケーションとしてコンポーネントをホストできます。.NET で COM コンポーネントに正しくアクセスするには、適切な作業を行う必要がありますが、動作するはずです。

もう 1 つのオプションは、ユーザーのアカウントで実行できるサービスを用意し、WCF を介して呼び出しを行い、サーバーで呼び出しを行うことです。

両方のプリンシパルは同じですが、基本的に別のアプリ ドメインで呼び出しを行い、他のアプリ ドメインとアプリケーションが実行されているドメインの間で要求/応答をやり取りします。

于 2011-06-20T13:50:37.980 に答える
0

答えとして私のコメントを繰り返すには:

ドライブ マッピングの代わりに、UNC ファイル パスに直接アクセスできますか?

なりすましに関する別のポイントを追加します。

(たとえば) my Impersonator classを介して、他のユーザーの下で実行する必要があるコード行になりすますことができます。私は数年前に書きました。

于 2011-06-20T13:51:34.267 に答える