0

私のプログラムの現在の行は

ステータス:= DllRegisterServer;

これは、WIN7であり、ユーザーが管理者ではないマシンで失敗します。

昇格された権限でDllRegisterServerをプログラムで呼び出すことは可能ですか?

または、昇格された権限を要求し、その情報を使用してDllRegisterServerを実行する方法はありますか。

4

2 に答える 2

3

昇格は、プロセスの作成時にのみ実行できます。したがって、このコードを実行するには新しいプロセスが必要です。あなたの主なオプション:

  1. ShellExecuteを呼び出して、動詞runasとexeファイルを渡します。これにより、新しいプロセスが向上します。
  2. requireAdministratorマニフェストを実行可能ファイルに追加して実行します。
  3. アウトオブプロセスCOMサーバーを使用して、昇格して開始します。

これらのオプションのうち、1番目の方が簡単である可能性があります。オプション1に個別の実行可能ファイルは必要ありません。コマンドライン引数を渡すと、登録関数が呼び出されます。

于 2013-02-04T18:52:17.043 に答える
1

プログラムの権利をプログラムで高める方法はありません。ユーザーだけがそうすることを目的としています。マニフェストを含めるなどして、プログラムに昇格された権限が必要であることをOSに指示できます。

マニフェスト<requestedPrivileges>情報をデルファイプロジェクトに追加する方法

(マニフェストを含めずに)昇格された権限なしでプログラムを実行することを許可することもできますが、昇格された権利を必要とするすべてのアクションを無効にするか、オプションが非昇格された権利で呼び出されたときに昇格された権利を要求するプログラムを再起動します。昇格されたプロセス(タスクマネージャーが[すべてのユーザーからのプロセスを表示]ボタンで動作するのと非常によく似ています:

Delphi:昇格したステータスでアプリケーションを起動し、終了するのを待つ方法は?

于 2013-02-04T18:50:58.733 に答える