管理者権限で起動していない場合、ダイアログで再起動促すテストスクリプト。
#uselib "shell32.dll"
#cfunc IsUserAnAdmin "IsUserAnAdmin"
#cfunc ShellExecuteEx "ShellExecuteExA" var
#uselib "kernel32.dll"
#func GetModuleFileName "GetModuleFileNameA" int,var,int
//管理者起動チェック
as = IsUserAnAdmin()
if as = 0{
//通常ユーザとして起動した場合
dialog "このソフトウェアは、管理者権限を必要とします。\n管理者権限で再起動しますか?",3,"管理者権限不足"
if stat = 6{
//自身を管理者として再起動させる
lpVerb = "runas"
sdim lpFile,260
sdim cmdline,260
sdim curfolder,260
GetModuleFileName 0,lpFile,256
cmdline = dir_cmdline
curfolder = dir_cur
dim pExecInfo,60/4
pExecInfo(0) = 60
pExecInfo(1) = 0
pExecInfo(2) = 0
pExecInfo(3) = varptr(lpVerb)
pExecInfo(4) = varptr(lpFile)
pExecInfo(5) = varptr(cmdline)
pExecInfo(6) = varptr(curfolder)
pExecInfo(7) = 5
result = ShellExecuteEx(pExecInfo)
end
} else {
//いいえを押したので即終了する
end
}
}
dialog "ソフトウェアは管理者権限で起動されています。",0,"起動成功"
実行ファイルを作成して確認してね。エディタ上からでも可能だけど、管理者権限起動後に HSP がスタートアップエラーになってしまう事があるので。