私の (.NET) アプリでは、ユーザーはデータベースの値を微調整できます。次に、Crystal または Reporting Services の編集に基づいてレポートを生成する必要がありますが、それは重要ではありません。重要なのは、生成がローカル ボックスで確実に行われるわけではないということです。たとえば、Crystal Reports がない可能性があります (または何でも)マシンにインストールされています。
そのため、ネットワーク マシン (レポートを生成できる) にメッセージ キューを設定すると、アプリはそのキューにメッセージを投稿し、必要なすべての情報を含むオブジェクトを送信します。ここまでは順調ですね。
ルールとトリガーを使用してターゲット キューを構成したので、新しいメッセージが送信されると、そのリモート マシン上のコンソール アプリが自動的にメッセージの処理を試みます。
問題は、すべて正常に動作するにもかかわらず、トリガーされたコンソール アプリがローカル コンピューター アカウントとして実行されることです。アプリは、統合認証を使用するデータベースと対話する必要があります。
コンソール アプリは、実際のユーザーとして実行すると完全に機能しますが、メッセージ キューによってトリガーされた場合は機能しません。
問題は、ルール、トリガー、またはコンソール アプリを特定のユーザーとして実行するように構成できますか? 見えると思われるすべての設定オプションを試しましたが、役に立ちませんでした。
おそらく、アプリのコード自体 (app.config) 内でユーザーになりすますことができますか? ASP.NETコードでは実行可能ですが、WinForms コードでは実行できません。
編集:なりすましの提案はうまく機能します... Process.Start()関数から「アクセスが拒否されました」というエラーが発生するまで、startwithcreateprocess()を呼び出します。
私が偽装しているユーザーには、ローカルボックスでプロセスを実行する権限があります(したがって、問題なくネイティブに実行できます)。