0

私は一種のカスタム企業セットアップであるアプリを書いています。このアプリは多くのタスクを実行しますが、その中には昇格が必要なものもあります。

アプリの起動時に UAC がユーザーに昇格を要求するように、マニフェストを含めました。

WNetAddConnectionこれらのタスクの 1 つは、一部のネットワーク ドライブ ( ) をリモート サーバーにマッピングすることです。これらのマッピングは永続的である必要があります。これまでのところ、アプリを閉じると、アプリがマップしたばかりのドライブがユーザーに表示されないことを除いて、問題はありません。

いくつかの調査 ( https://serverfault.com/a/185885/147818 ) の後、ユーザーがログインすると、セッションが 2 つのトークンを受け取ることを理解しました。昇格が必要なときにプロセスを実行します。

私の質問: アプリのタスクが終了したときに、ユーザーがエクスプローラーでネットワーク ドライブを確認できるように、現在のユーザーがフィルター処理されたトークンを取得するスレッドをアプリが起動する可能性はありますか?

このトークンでスレッドになりすますことは可能ですか?

私はこれらの可能な回避策を認識しています:

  • 昇格を必要とする特定のタスクのみが COM オブジェクトにカプセル化されるように、アプリを再設計します。
  • 設定を使用してレジストリを微調整しますEnableLinkedConnections(ユーザーのセッションの再起動が必要です)

しかし、いくつかの理由により、これらのソリューションはどれもオプションではありません。

どんな助けでも大歓迎です

4

1 に答える 1

2

昇格されたインストーラーからドライブをマッピングするときに、同じ問題が発生しました。

これを処理した方法は、最初にインストーラーからドライブをマップすることです。これはもちろん、昇格されたUAC 状態で実行されています。インストーラーが最後に行うことは、ドライブ文字とそれらにマップされたネットワーク ドライブを一覧表示するテキスト ファイルを作成することです。次に、ユーザーのマッピングを行う昇格されていない2 番目のプログラムを実行します。これらのマッピングは永続的です。

これは、世界中の顧客のマシンに何千回もインストールされています。

于 2012-11-30T21:25:52.643 に答える