1.8.2 コマンドの動作
サービスからスクリプトファイルを実行する場合,サービスに指定されているユーザアカウントの権限で動作します。しかし,マネージャからスクリプトファイルを実行する場合,管理者グループのユーザでログオンしても,OSのユーザアカウント制御(UAC)によりJP1/Scriptアプリケーションは標準ユーザで実行されます。
標準ユーザで実行されると影響を受けるコマンドを次に示します。
-
アクセス拒否のエラーとなるコマンド
-
ファイル操作系のコマンド
-
Exec,NetExecコマンド
-
TerminateProcessコマンド
-
GetProcessInfoコマンド
- 〈この項の構成〉
(1) アクセス拒否のエラーとなるコマンド
アクセス拒否のエラーとなるコマンドを表1-3に示します。
これらのコマンドを実行するスクリプトファイルは,管理者権限で実行する必要があります。標準ユーザで実行した場合,コマンドが次のエラーになります。
「0005:アクセスは拒否されました。ファイルの属性又はセキュリティを見直してください。」
スクリプトファイルを管理者権限で実行する方法については,「1.8.6 管理者権限での実行」を参照してください。
No. |
コマンド |
アクセス拒否のエラーとなる条件 |
---|---|---|
1 |
SetEnviroment |
第一引数(Type)にSystemEnvを指定 |
2 |
Rename |
第三引数(Metod)にRebootを指定 |
3 |
SetVolLabel |
なし |
4 |
RegWrite |
第一引数(RegKey)にHKEY_CURRENT_USER以外を指定※1 |
5 |
RegDelete |
第一引数(RegKey)にHKEY_CURRENT_USER以外を指定※2 |
6 |
RegDeleteKey |
第一引数(RegKey)にHKEY_CURRENT_USER以外を指定※3 |
7 |
ServiceCreate |
なし |
8 |
ServiceDelete |
なし |
9 |
ServiceStart |
なし |
10 |
ServiceStop |
なし |
11 |
ServicePause |
なし |
12 |
ServiceContinue |
なし |
13 |
ServiceChange |
なし |
14 |
ServiceControl |
なし |
15 |
MakeGroup |
第二引数(RootType)にLcl_Programを指定 |
16 |
DeleteGroup |
第二引数(RootType)にLcl_Programを指定 |
17 |
MakeShortcut |
第一引数(RootPath)にLcl_Desktop,Lcl_Startmenu,Lcl_ProgramまたはLcl_Startupを指定 |
18 |
DeleteShortcut |
第一引数(RootPath)にLcl_Desktop,Lcl_Startmenu,Lcl_ProgramまたはLcl_Startupを指定 |
19 |
GetProcessCount |
なし |
20 |
GetProcessInfo |
なし |
21 |
TerminateProcess |
なし |
22 |
Copy |
第九引数(Option6)または第十引数(Option7)にSecurity を指定 |
(2) ファイル操作系のコマンド
ファイル操作系のコマンドで,環境変数ProgramFilesおよびWinDirに設定されているフォルダ下のファイルに対して出力・更新した場合,ユーザごとの領域へリダイレクトされるときがあるので注意が必要です。リダイレクト先は環境変数LocalAppDataに設定されているパスのVirtualStore下になります。リダイレクトされる条件は,ファイル操作系のコマンドを実行するスクリプトファイルを標準ユーザで実行することです。リダイレクトされないためにはスクリプトファイルを管理者権限で実行しなければなりません。スクリプトファイルを管理者権限で実行する方法については「1.8.6 管理者権限での実行」を参照してください。
標準ユーザで実行したスクリプトファイルからファイル操作系コマンドで入力・参照した場合,リダイレクト先のファイルが優先して操作対象になります。
(3) Exec,NetExecコマンド
Exec,NetExecコマンドでInstall.exe,Setup.exeなどの管理者権限が必要な実行ファイルを呼び出す場合,Exec,NetExecコマンドを実行するスクリプトファイルを標準ユーザで実行すると,次の現象が発生します。
-
Exec,NetExecコマンドが次のエラーになる。
「0740:要求された操作には管理者特権が必要です。」
-
権限昇格の[ユーザアカウント制御]ダイアログが表示される。
通常は最初にExec,NetExecコマンドが1.のエラーになり,その後OSのプログラム互換アシスタント機能が動作して2.のダイアログが表示されます。
エラーおよびダイアログの表示を抑止したい場合は,スクリプトファイルを管理者権限で実行しなければなりません。スクリプトファイルを管理者権限で実行する方法については「1.8.6 管理者権限での実行」を参照してください。
権限昇格の[ユーザアカウント制御]ダイアログで[キャンセル]ボタンをクリックした場合,Exec,NetExecコマンドが次のエラーになります。
「1223:この操作はユーザーによって取り消されました。」
(4) TerminateProcessコマンド
他ユーザで実行中のプロセスは強制終了できません(スクリプトプロセスは強制終了できます)。他ユーザのプロセスを指定してもエラーにならないで正常終了します(存在しないプロセスを指定したときと同じ動作です)。
(5) GetProcessInfoコマンド
自ユーザで実行中のプロセス情報だけ取得できます。他ユーザで実行中のプロセスIDを指定した場合,アクセス拒否のエラーになります。また,サービス空間で実行中のスクリプトからログオン空間で実行中のプロセスIDを指定した場合もアクセス拒否のエラーになります。