Windows7で設定した特定のプログラムのみUAC回避させる

UACは、Vistaから搭載されたセキュリティ機能。

よく見るこのダイアログがでるやつ。

これは、たとえ管理者でログインしていても、アプリケーションが実行されるときは管理者権限で実行しないようにして、不正なプログラムが実行されちゃうのを回避する。

なかなかに鬱陶しいヤツだが、そう見ると絶対外せない。

 

で も、明らかに安全と解っている、しかもよく使うアプリ(テキストエディタとか)を起動するたびにこいつが出るのは、いかにも神経過敏もので、「例外設定で きたらいいのに」と常々思っていた。まあ、その”よく使うアプリ”がウィルス感染しないとも限らないので、例外設定がないのも一理ある。

 

でも回避するw

 

ネットを探したら、なかなかナイスなアイデアの方法が公開されていた。

Windows7で設定した特定のプログラムのみUAC回避させる方法

タ スクスケジューラは、登録したタスクを「最上位の特権で実行」するオプションがあるが、このオプションをONにした空っぽのタスクを用意する。そして、 VBSでタスクスケジューラにアクセスして、前述の空っぽのタスクに、UAC回避させたい実行ファイルを渡す、というもの。

設定が完了したら、以後はVBSを実行してアプリを起動すればOK。

 

覚え書き用に、VBSのソースを転載しておこう。

 

こいつをタスクスケジューラに登録する


Option Explicit

Dim objWshShell ' WshShell オブジェクト
Dim objFileSystem
Dim objFilePath
Dim strParam
Dim strExecParam

If WScript.Arguments.Count <> 0 Then
strParam = Split(WScript.Arguments(0), ",")
strExecParam = ""
If UBound(strParam) = 1 Then
strExecParam = strParam(1)
End if

Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFilePath = objFileSystem.GetFile(strParam(0))

objWshShell.CurrentDirectory = objFileSystem.GetParentFolderName(objFilePath.ShortPath)
Call objWshShell.Run("cmd.exe /c start /NORMAL " & objFilePath.ShortPath & " " & strExecParam,0,False)
End if

 

これは、回避したいアプリごとに作る

Option Explicit

Dim objTaskService
Dim objFolder
Dim objTask
Dim strAppPath

'' ===ここにプログラムのフルパスを設定===
if WScript.Arguments.Count = 0 then
strAppPath = "D:\apps\sakura\sakura.exe"
else
strAppPath = "D:\apps\sakura\sakura.exe, " & WScript.Arguments(0)
end if

'' タスクサービスオブジェクトの取得
Set objTaskService = CreateObject("Schedule.Service")
'' タスクサービスとの接続
objTaskService.Connect
'' 場所を指定してフォルダオブジェクトの取得
Set objFolder = objTaskService.GetFolder("\")
'' タスク名を指定してタスクオブジェクトを取得
Set objTask   = objFolder.GetTask("UACEscape")
'' タスクを実行
objTask.Run """" & strAppPath & """"

 

さっそくテキストエディタ(サクラエディタ)でやってみた。

手順は面倒だけど、難しくはない。あっさり完了。

 

おお~、UACのダイアログがでない キャーゞ(^o^ゝ)≡(/^ー^)/”””パチパチ

 

ところが、テキストエディタというヤツは、アプリ本体を直接起動することはまれで、ほとんどの場合、エディタに関連づけられたテキストファイルなどをダブルクリックして起動する。

ファイルには、テキストエディタ本体が関連付いているので、本体が直接起動して、やっぱりUACダイアログがでる・・・(ToT)

 

んで、思い切って、上記のVBSファイルに関連付けを変更してみた。

 

おお~、UACのダイアログがでない キャーゞ(^o^ゝ)≡(/^ー^)/”””パチパチ

 

ところが、VBSファイルはアイコンを持っていないので、テキストファイルのアイコンがエディタのモノから無味乾燥の地味なアイコンに全部変わってしまった・・・(ToT)

 

だんだん意地になってきた。。。とことんやったろうじゃん!!

 

ファイルの関連付けをすると、関連付けされているアプリのアイコンがファイルに適用されるけど、VBSファイルのアイコンが変更できない。

VBSファイルのショートカットを作って変更を試みたが、これも不可。

 

いろいろ調べたら、「関連付け」自体のアイコンを変更する方法を発見!

関連付けのアイコン変更

 

要はレジストリに登録されている関連付け情報に、アイコン情報を自分で追加してやる、という方法だった。

「.TXT」のレジストリ情報に「DefaultIcon」という項目を追加して、テキストエディタを指定してやると、

無味乾燥アイコンが一斉にテキストエディタのアイコンに!!

テキストエディタには、TXTだけじゃなくていろんな拡張子が関連付いてるけど、まあそれは追々各個撃破ということで。。。

 

めでたしめでたし(*^^*)