1

権限の昇格が必要なアプリケーションがあります (カスタム インストーラーのようなものです)。このアプリケーション内から、ShellExecute() を使用して PDF ファイルを表示します。Adobe Reader が呼び出し元のアプリケーションと同じ権限で起動されているように見えます。ただし、昇格せずに標準のユーザー権限で Adob​​e Reader を起動したいと思います。

それを行う方法はありますか?(それは Delphi にありますが、この問題ではおそらく言語は問題になりません)。

4

2 に答える 2

0

残念ながら、これを行うための本当に簡単な方法はありません。

これを行う 1 つの方法は、タスク スケジューラを使用することです。ITaskServiceインターフェイスを使用して、現在ログインしているユーザーの昇格されていない資格情報を使用して、タスクをすぐに実行するようにスケジュールします。

于 2013-06-17T19:58:06.770 に答える
0

あなたが達成しようとしていることは、非常に簡単に行うことができず、サポートされていません。ただし、わずかなハッキングを使用することは可能です。Aaron Margosis は、1 つの手法を説明する記事を書きました。

関連セクションを引用するには、次の手順を実行する必要があります。

  1. 現在のトークンで SeIncreaseQuotaPrivilege を有効にする
  2. デスクトップ シェルを表す HWND を取得する (GetShellWindow)
  3. そのウィンドウに関連付けられているプロセスのプロセス ID (PID) を取得します (GetWindowThreadProcessId)
  4. そのプロセスを開く (OpenProcess)
  5. そのプロセスからアクセス トークンを取得する (OpenProcessToken)
  6. そのトークンでプライマリ トークンを作成します (DuplicateTokenEx)
  7. そのプライマリ トークン (CreateProcessWithTokenW) で新しいプロセスを開始します。

この記事には、Delphi に変換するのに十分なほど簡単なデモ C++ ソースのダウンロード リンクが含まれています。

于 2013-06-17T20:06:35.090 に答える