
Windows 8.1 x64 を使用しており、ユーザー ログイン時に管理者権限でプログラムを実行したいと考えています。
プログラムのショートカットを作成しようとして、ショートカットまたはプログラム自体のプロパティで「管理者として実行」にチェックを入れ、ショートカットを または に配置しましたがC:\Users\MyUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
、C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
ボックスにチェックを入れると無効になりました。
次に、Resource Hacker を使用してプログラムを編集し、このプログラムに管理者権限が必要になるようにマニフェストを変更しました。これにより、スタートアップ ディレクトリの下のショートカットも無効になりました。その後、プログラムを追加しようとしましたHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
が、これも機能しませんでした。
ユーザーログイン時に管理者権限でプログラムを実行するにはどうすればいいのでしょうか?
答え1
これを行う最善の方法 (管理者として実行したいだけでなく、UAC プロンプトなしでも実行したい場合の唯一の簡単な方法) は、スケジュールされたタスクを作成することです。そこで、どのユーザーで実行するかを指定できるだけでなく、「最高の権限で実行」することも指定できます。チェックボックス ボタンの [管理者として実行] は、実際に管理者ユーザーを使用するのではなく、UAC プロンプトをトリガーするため、これがおそらく必要なことです。トリガーを「ユーザー ログオン時」として指定すると、スタートアップ キーまたは実行キーを使用した場合と同じ効果が得られます。
あるいは、/savecred オプションを指定した runas を使用して、別のユーザーのパスワードを一度保存し、それを永久にキャッシュすることもできますが、私の知る限り、UAC を回避することはできません。
答え2
次の内容を含む appStart.cmd のようなファイルを作成します。
start "" %1
レジストリの2番目に追加する必要がある
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
キーと値のペア
キー:"appname"
値: "path-to-appStart.cmd" "path-to-myapp.exe"
この方法では、Windows の起動時にコマンド プロンプトからアプリが呼び出され、管理者として実行する許可が求められます。コマンド プロンプトを受け入れた後、閉じると、アプリは管理者権限で実行されます。