自動実行に管理者アクセスが必要なプログラムを実行する方法を理解しようとしています。
DuMeter、Speedfan、またはATI Tray Toolsでは、ハードウェアとのインターフェイスに管理者アクセスが必要です。さらに、これらはバックグラウンドタスクであり、起動のたびに手動で実行する必要はないため、スタートアップの一部にする必要があります。
周りを見回して、見つけた解決策に最も近いのは、タスクとしてスケジュールすることでしたが、タスクリストが乱雑になるだけでなく、一部のプログラムをできるだけ早く実行する必要があるため、これは良くありません(例: NICで転送されたバイトを監視して、ファンの速度を調整したり、デスクトップの色とリフレッシュレートを設定したりします)。
それらをサービスとして実行するように変換することを検討しましたが、それは不必要に過剰に思えます。
管理者としてプログラムを自動実行するためのより良い方法はありますか?
ありがとう。
更新
明確にするために、自動実行タスクを昇格させる方法では、UACプロンプトの受け入れなどのユーザー入力は必要ありません。もちろん、UACを無効にすることもできますが、それは明らかに理想的ではありません。
さて、私はあまりにも面倒なことやパスワードを平文で公開することなくそれを行う方法を考え出しました。
まず、管理者アカウントを有効にする必要があります。これは最も不便な部分です。通常のアカウントを自動ログインに設定しましたが、実際に表示されていなくても、ログイン画面で管理者アカウントを使用できるのは面倒です。管理者アカウントを公開するとシステムの安全性が少し低下すると不満を言う人もいるかもしれませんが、とにかくコマンドラインからアカウントを使用するにはアカウントのパスワードを設定する必要があるため、その懸念は重要ではありません。
私が選んだ方法では、最小化されたプログラムの実行をサポートするある種のSHELLEXECUTEプログラムを使用する必要があります。 (代わりに、コマンドインタープリターCMDに組み込まれているSTARTコマンドを使用することもできますが、その場合、コマンドプロンプトウィンドウが点滅しますが、ウィンドウのない非コンソールプログラムはそれを回避します。)選択できるものはたくさんありますが、私はそれを使用しました。昔に書いた。
ここで、ShellExecuteを呼び出すレジストリエントリをRUNキーに作成し、最小化オプションを指定して、実行するプログラムとしてRUNASを使用します。 (必要に応じて別のアカウントを使用してプログラムを実行できるプログラムは他にもありますが、RUNASにはWindowsが付属しており、パスワードを保存してコマンドラインに含めないようにすることができます。)または、通常のWindowsショートカットを作成して移動することもできます。 Startupフォルダーに移動します。
最後に、プログラム(およびその引数)を引数としてRUNASに渡す必要があります。
(ターゲットプログラム(またはそれに関するプログラム)をRUNASで実行し、/ SAVECREDオプションを少なくとも1回最小化せずに実行することを忘れないでくださいパスワードを保存するため。)
使用するコマンドラインは、プログラムを呼び出すプログラムであるため、かなり複雑になる可能性があります。ターゲットプログラムに引数を指定する必要がある場合はさらに悪化し、スペースを含める必要がある場合はさらに悪化します。引用符の状況はすぐに厄介になる可能性があるため、多くの実験が必要になる可能性があります。
たとえば、P.J。Naughterの ShelExec を使用し、SpeedFanを実行する場合は、次のようなコマンドラインを使用します。
shelexec /showcmd:sw_hide /EXE runas "/params:/user:administrator /savecred ""C:\Program Files\SpeedFan\speedfan.exe"""
SpeedFanのオプションを最小化して開始するように設定したことを指摘しておく必要があります。そうしないと、speedfanを「直接」実行する代わりに、SpeedFanを実行するための最小化オプションを使用して2番目のShellExecuteプログラムを実行する必要があります(プログラムを呼び出すプログラムを呼び出すプログラムプログラム)。それを機能させることは、ほぼ確実に、最も熟練したコンピューター管理者でさえ、怒り狂うことになるでしょう。
コマンドラインを機能させるのは少し手間がかかるかもしれませんが、管理アクセスを必要とする自動実行のバックグラウンドタスクには非常にうまく機能するようです。何よりも、標準/制限付きユーザーアカウントで機能するため、この方法を使用すると、通常のユーザーにUACプロンプトを表示せずに、昇格された特権でプログラムを自動実行できます。
(それはうまく機能しますが、欠点があります。特に、プログラムを間接的に実行するため、Autoruns、StartupDelayer、HijackThisなどの自動実行マネージャーは、どの実際のプログラムが自動実行されているかを検出できません。引き続き機能し、無効化/削除などは可能ですが、適切なアイコンやファイルリソース情報は表示されません。)
スケジュールされたタスクとしてスピードファンを実行することは正しい考えでした。
Windows 7では、タスクは日付/時刻だけでなく、トリガーを使用して実行することもできます。
ただし、正しい方法で構成する必要があります。
最も簡単な方法は、Skype自動実行タスクからすべての設定をコピーすることです。
また、タスク実行スケジュールのトリガーをもう1つ追加しました。ログオン時に実行します。 (私は自分の言語から設定を翻訳しています。そのため、英語版で見られるように正確に翻訳できない場合があります)
設定は次のとおりです。
"C:\Program Files (x86)\SpeedFan\speedfan.exe"
)、コマンドラインオプションを右側のフィールド。私のオプションは-minimize -nosmbscan
。次に、をクリックしますOKあなたが言及したプログラムには通常、設定内からRUN AT STARTUPオプションがあります-これが通常最も簡単な方法です。
プログラムをタスクとして実行すると、昇格された特権でプログラムを実行できるようになります。 [新しいタスクの作成]ダイアログボックスには、それを実行するオプションがあります。
また、各exeファイルのプロパティをチェックし、[互換性]ページのチェックボックスをオンにして、常に管理者として実行することもできます。
詳細はこちら- http://www.sevenforums.com/tutorials/11841-run-administrator.html
および http://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-Prompt-create.html
タスクスケジューラを使用してプログラムを自動起動することはあまりユーザーフレンドリーではなく、時には副作用があったと思います(たとえば、プログラムのトレイアイコンが追加されていません)。
これを解決するために、最初に管理者権限で自分自身を再起動し、次にディレクトリ内のすべてのファイルを起動するElevatedStartupというプログラムを作成しました。 Elevated Startupが昇格されたため、起動するすべてのプログラムにも管理者権限が付与されます。このディレクトリは、従来のスタートアップディレクトリの隣のスタートメニューにあり、ほとんど同じように機能します。
UACの設定によっては、プログラムが再起動したときに1つのUACプロンプトが表示される場合があります。
ここでプログラムを入手できます: https://stefansundin.github.io/elevatedstartup/
別の方法は、Microsoftの PsExec を使用することです-実行する必要のあるコマンドにユーザー名とパスワードを渡すことができます。