Windows Vista からはセキュリティ強化のために UAC が導入されているので、管理者権限が必要となるアプリを起動すると確認が求められるようになりました。通常は確認のダイアログに対してはいと答えるだけなので、特に問題はないのですが、スタートアップに登録するアプリということになると状況が変わってきます。
通常、常駐ソフトをログオン時に自動的に起動したい際には「スタート」メニューの「スタートアップ」にショートカットを放り込んであげればOKなのですが、Windows7ではスタートアップに登録したプログラムは UAC の関係なのか、プロパティで管理者として実行にチェックを入れておいても、ユーザー権限でしか立ち上ってくれません。
これについていろいろ調べてみたところ、スタートアップではなく、タスクスケジューラを使って、最上位の権限で起動するようなタスクを作り、起動タイミングをログオン時にしてあげることで、スタートアップに登録したときと同じ効果が得られることがわかりました。
† 設定方法のメモ
Windows7ではタスクスケジューラは「タスク スケジューラを起動する」に記載されているとおり、「ファイル名を指定して実行」に"Taskschd.msc"を入力することで起動できます。後は「基本タスクの作成」からウィザードに従って、タスク名の入力した後、トリガはログオン時を選択し、起動するプログラムを指定するログオン時に実行されるタスクを追加してやります。最後に追加したタスクのプロパティを開いて、セキュリティのオプションで「最上位の特権で実行する」にチェックを入れるてやればOKです。(画像参照)。
手順はちょっと煩雑ですがこれで、指定したプログラムがログオン時に UAC の関与なしに管理者権限で実行されるようになります。UAC 抜け道っぽいところではありますが、とりあえず目的は達成できました。
† 自分の場合、何に使っているか
自分の使っているノートPCではOSから認識できない領域をRAM Diskとして使っているのですが、このRAM Discには当たり前と言えば当たり前の欠点があって、シャットダウンしたり、ハイバネーションをしたりすると内容が吹っ飛んでしまいます。
基本的に置いているデータはtempデータなので、内容が吹っ飛ぶのは特に問題ないのですが、壊れるときにはファイルシステムごと壊れるので、ハイバネーションから復帰するたびにRAM Diskに対してフォーマットをかけてファイルシステムを復元してあげる必要があり、この作業が意外と面倒です。で、これを自動でやってくれるSuspendWatcherを使っています。
このソフトウェアはディスクのフォーマットを自動的に行うちょっと恐ろしい動作のものなので、管理者権限が必須なんですね。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3537
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。