愚者雑記

※ご注意!
〇レビュー関連⇒ネタバレあり
〇PC関連⇒自己責任をお忘れなく!
=誤字脱字等ご容赦下さい=

ユーザーアカウント制御(UAC)回避方法

2017-11-05 | パソコン関連

『Fall Creators Update』に於いて「OpenOffice.org」が「管理者として実行」しないと

バグってしまうという事態になった(主に「OpenOffice Calc」である)

「OpenOffice Calc」のプログラムファイルである「scalc.exe」を「管理者として実行」

にしていると「UAC警告」画面が出るのが非常に煩わしい

一番の問題は「Calcで作成したファイルを開く」度に「UAC警告」画面が出る事!

以前「UAC」回避の方法を検索したが殆どが「プログラムファイル(.exe)」の回避策

しかし、今回私が知りたいのはソフト(Calc)で作成した「ファイル(.ods)」の回避策である

理由は『「OpenOffice Calc」を起動させてから「ファイル(.ods)」を開く』ではなく

『直接「ファイル(.ods)」をクリックして開く』からである

これについて今回改めて検索したけど殆ど無い

以前と同様『解決策は「スクリプトの作成」のみ』

(記載したWebがあった場合はご容赦下さい私の検索が悪かった為です)

私の場合Sub-PCで頻繁に利用するのは一つだけだから『スクリプトの作成』でも問題は無いが

普通のやり方(「プログラムファイル(.exe)」の回避策の応用)は出来ないものかと

ない頭をフル回転させて一つの方法を試した結果偶然にも成功した

ということで今回は「UAC回避方法」を纏めてみます

【自己責任】お忘れなく!

【UAC回避方法】

(1)タスクを作成してショートカットファイルのリンク先を変更する

(2)スクリプトとタスクを作成する

の二通りである(私的には(1)がスタンダード(普通のやり方)だと思っています)

※下記の場所などは私の環境の場合ですのでご自身の環境に置き換えて下さい

[1]プログラムファイル(.exe)の回避方法

通常「ソフト(アプリ)を起動する」という場合がこれです

今回は[CrystalDiskInfo]と[OpenOffice Calc]を例にします

(1)タスクを作成してショートカットファイルのリンク先を変更する

<A>CrystalDiskInfo

・CrystalDiskInfoのプログラムの場所

D:\Documents\DiskInfo\DiskInfo.exe

・ショートカットファイルの場所(スタートにピン止めしている場合)

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\DiskInfo

ショートカットファイルを作成していない場合は作成する

//////////////////////////////////////////////////////////////////////////////////////

『「プログラムファイル(.exe)」のプロパティで「管理者としてこのプログラムを実行する」

にチェックをいれる』

と書いてある記事もあるが「チェック」しなくても結果は同じだったので今回は省略した

//////////////////////////////////////////////////////////////////////////////////////

 

1)タスクの作成

「スタート」-「メニュー一覧」-「Windows 管理ツール」-「タスク スケジューラ」

左ペインの「タスク スケジューラ ライブラリ」をクリックして

右ペインの「タスクの作成」をクリック[全般タブ]の[名前(M):]に「DiskInfo」と入力

//////////////////////////////////////////////////////////////////////////////////////

[名前(M):]には「分かり易い名前」を入力

//////////////////////////////////////////////////////////////////////////////////////

 

「セキュリティ オプション」の『最上位の特権で実行する(I)』にチェックを入れる

[操作タブ]-[新規(N)]-[参照(R)]をクリックして

「DiskInfo.exe」を選択すると左の枠内に選択した場所が表示される

今回は「D:\Documents\DiskInfo\DiskInfo.exe 」と表示される

//////////////////////////////////////////////////////////////////////////////////////

『[参照(R)]をクリックして実行するプログラムを選択し

[開始]に同じパスをコピー&ペーストして「OK」をクリック』

と書いてある記事もあるがこうすると「ディレクトリが違います」と表示されて「失敗」

これも「何もしない」で問題ないから省略しました

//////////////////////////////////////////////////////////////////////////////////////

 

「OK」-「OK」とクリックして閉じると中央ペインの上段に「DiskInfo」と表示される

「タスク スケジューラ」を閉じる

2)ショートカットファイルの編集

スタートにピン止めしている場合は「スタート」-「DiskInfo」右クリックして

「その他」-「ファイルの場所を開く」をクリックすると早い

「DiskInfo」のショートカットファイルを右クリックして「プロパティ(R)」をクリックする

「リンク先(T):」のアドレスを下記に変更

「C:\Windows\System32\schtasks.exe /run /tn DiskInfo」

//////////////////////////////////////////////////////////////////////////////////////

「C:\Windows\System32\schtasks.exe /run /tn 〇〇」

〇〇はタスク作成時の「名前(M):」を入力

//////////////////////////////////////////////////////////////////////////////////////

 

「実行時の大きさ(R):」を「最小化」にして「OK」で閉じる

アイコンが変更になるので元のアイコンに戻す場合は再度「プロパティ(R)」をクリックして

「アイコンの変更(C)」をクリックすると何か表示が出るので「OK」をクリックして

「参照」をクリックして「D:\Documents\DiskInfo」で「DiskInfo.exe」を選択すると

アイコンが表示されるので「OK」を押して「OK」で閉じる

この「ショートカットファイル」をクリックすると「UAC警告」画面が出ることなく起動する

<B>OpenOffice Calc(変更箇所のみそれ以外は上記の通り)

予めショートカットファイルを作成して分かり易い場所(D:\等)に置いておく

・OpenOffice Calcのプログラムの場所

<32bit>

C:\Program Files\OpenOffice 4\program\scalc.exe

<64bit>

C:\Program Files (x86)\OpenOffice 4\program\scalc.exe

・ショートカットファイルの場所

R:\OpenOffice Calc

名前が「scalc - ショートカット」なのでこれを「OpenOffice Calc」に変更してます

1)タスクの作成

名前を「OOcalc」にする

2)ショートカットファイルの編集

リンク先「C:\Windows\System32\schtasks.exe /run /tn OOcalc」に変更する

アイコンを元のアイコンに変更する

場所は「C:\Program Files\OpenOffice 4\program」 選択するのは「scalc.exe」です

//////////////////////////////////////////////////////////////////////////////////////

スタートのメニュー(アプリ)一覧から「OpenOffice 4.1.3」フォルダをクリックして

「OpenOffice Calc」を右クリックして「その他」-「ファイルの場所を開く」をクリック

そこには「scalc.exe」のショートカットファイル(名前は「OpenOffice Calc」)がるので

それをコピーしてもいい

「ファイルの場所を開く」のファイルの場所は下記である

「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」

//////////////////////////////////////////////////////////////////////////////////////

 

下記は必ずしも行う必要はないです

3)ショートカットファイルのコピー

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

の「Programs」フォルダ内にコピーする

これでスタートのメニュー(アプリ)一覧に表示される

表示場所:OpenOffice 4.1.3フォルダの下に「OpenOffice Calc」と表示される

表示された「OpenOffice Calc」を右クリックしてピン止めしてもいい

4)ショートカットファイルの削除

「R:\OpenOffice Calc」のファイルを削除するのだが「Rドライブ」はRamDisk(バックアップ無し)

だからいつもそのままにしている(再起動または電源OFFで全て消え去るから)

 

(2)スクリプトとタスクを作成する

<A>元になるスクリプトとタスクの作成

1)スクリプト作成

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~End if までをコピーしてメモ帳に張り付けて適当な名前を付けて適当な場所に保存する

ーーーーーーーーーチェック項目---------

・Optionの行の上に空白行がないか

・Optionの「O」の前にスペースがないか

・End ifの行の下に空白行がないか

・End ifの「f」の後ろにスペースがないか

ーーーーーーーーーチェック項目---------

保存したファイルを開いて「ファイル(F)」-「名前を付けて保存(A)」で

・保存場所は自分が分かる場所にする

・「ファイルの種類(T):」で「すべてのファイル」を選択

・「ファイル名(N):」で「UAC回避.vbs」と入力

※名前の後に必ず半角英数で「.vbs」と入力のこと

※「ファイル名(N):」は分かり易い名前の方がいい

「保存(S)」を押すと「UAC回避」という名のスクリプトができる

このファイルを新規フォルダを作成してその内に置く

今回は「D:\uac\UAC回避.vbs」とする

2)タスクの作成(上記参照のこと)

[名前(M):]に「unUAC」と入力(分かり易い名前を付ける)

[参照(R)]は「D:\uac\UAC回避.vbs」

※『最上位の特権で実行する(I)』にチェックを忘れない事

<B>実行するファイル(スクリプト)の作成

Option Explicit
 
  Dim objTaskService
  Dim objFolder
  Dim objTask
  Dim strAppPath
 
  '' ===ここにプログラムのフルパスを設定===
  strAppPath = "〇〇"
 
  '' タスクサービスオブジェクトの取得
Set objTaskService = CreateObject("Schedule.Service")
  '' タスクサービスとの接続
objTaskService.Connect
  '' 場所を指定してフォルダオブジェクトの取得
Set objFolder = objTaskService.GetFolder("\")
  '' タスク名を指定してタスクオブジェクトを取得
Set objTask   = objFolder.GetTask("△△")
  '' タスクを実行
objTask.Run """" & strAppPath & """"

Option Explicit~strAppPath & """"までをコピーしてメモ帳に張り付けて

適当な名前を付けて適当な場所に保存する

ーーーーーーーーーチェック項目---------

・Optionの行の上に空白行がないか

・Optionの「O」の前にスペースがないか

・strAppPath & """"の行の下に空白行がないか

・strAppPath & """"の後ろにスペースがないか

ーーーーーーーーーチェック項目---------

〇「OpenOffice Calc」を例にとります

保存したファイルを開いて

・〇〇にはプログラムファイルの場所を正確に入力する

<32bit>

C:\Program Files\OpenOffice 4\program\scalc.exe

<64bit>

C:\Program Files (x86)\OpenOffice 4\program\scalc.exe

・△△にはタスク作成時の「名前(M):」を入力する

'' ===ここにプログラムのフルパスを設定===
  strAppPath = "C:\Program Files\OpenOffice 4\program\scalc.exe"

'' タスク名を指定してタスクオブジェクトを取得
Set objTask   = objFolder.GetTask("unUAC")

赤文字が編集(入力)した箇所

「ファイル(F)」-「名前を付けて保存(A)」で

・保存場所は自分が分かる場所にする

・「ファイルの種類(T):」で「すべてのファイル」を選択

・「ファイル名(N):」で「Calc.vbs」と入力

※名前の後に必ず半角英数で「.vbs」と入力のこと

※「ファイル名(N):」は分かり易い名前の方がいい

「保存(S)」を押すと「Calc」という名のスクリプトができる

このファイルを適当な場所に置く

このファイル(スクリプト)をクリックすると「UAC警告」画面が出ることなく起動する

下記は必ずしも行う必要はないです

アイコンを上記を参照して「OpenOffice Calc」のアイコンにする

今回は「D:\uac\Calc.vbs」として「Calc.vbs」のショートカットファイルを

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

の「Programs」フォルダ内に作成して名前を「OpenOffice Calc」に変更

これでスタートのメニュー(アプリ)一覧に表示される

表示場所:OpenOffice 4.1.3フォルダの下に「OpenOffice Calc」と表示される

表示された「OpenOffice Calc」を右クリックしてピン止めしてもいい

 

[2]ファイル(.ods)の回避方法(OpenOffice Calc の例)

(1)タスクを作成してショートカットファイルのリンク先を変更する

(「.exe」の応用となります)

まず作成したファイルのショートカットを作る

「〇〇.ods」のショートカットをRドライブに作成し名前を揃える

・「〇〇.ods」の場所→「D:\Documents\〇〇.ods」

・ショートカットファイルの場所→「R:\〇〇.ods」

1)タスクの作成

名前を「calc_1」とする

「セキュリティ オプション」の『最上位の特権で実行する(I)』にチェックを入れる

[操作タブ]-[新規(N)]-「参照(R)」で「〇〇.ods」の場所を選択

今回は「D:\Documents\ 〇〇.ods」である

2)ショートカットファイルの編集

リンク先「C:\Windows\System32\schtasks.exe /run /tn calc_1」に変更

アイコンを「.ods」のアイコンに変更したいので場所を

「C:\Program Files\OpenOffice 4\program 」選択するのは「soffice.exe」

アイコンが多数表示されるので左下段のアイコンを選択する

(これがファイルで表示されているのと同じだと思う)

3)ショートカットファイルのコピー

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

のProgramsフォルダ内にコピーする

これでスタートのメニュー(アプリ)一覧に表示される

表示された「〇〇」を右クリックしてピン止めしてもいい

この方法には問題が ”ひとつ” ある

『多数ファイルがある場合』は(1)(2)をファイルの数だけ行う

(タスクの名前は同じものを使えない)

 

(2)スクリプトとタスクを作成する

<A>は同じ<B>の一部を変更する

〇〇の部分を『プログラムの場所,ファイルの場所』に変更する

「C:\Program Files\OpenOffice 4\program\scalc.exe」

これが

「C:\Program Files\OpenOffice 4\program\scalc.exe,D:\Documents\〇〇.ods」

こうなる

後は全て同じ(アイコン変更などは上記を参照して下さい)

この方法だと実行ファイルのみ作ればいいから多少は楽になる

【自己責任】お忘れなく!

2017/12/06:追記・修正

以上



コメントを投稿