■ Setup.vbs
このスクリプトは、タスクスケジューラへの登録を行った後、スケジュールの直接起動[PSO2yomi]と
遅延起動スクリプト[PSO2yomiD5]への ショートカットを PSO2yomi のアイコンを割り当てた状態で デスクトップに作成する。
タスクスケジューラから 最高権限で PSO2yomi を 起動させるよう構成を展開しているのが このスクリプトの肝。
因って 配置された何れのショートカットから起動しても、UACの確認画面は表示されない。
また、PSO2yomi のフォルダを 別の場所に移設した場合にも、そのフォルダ内で Setup.vbs を実行するだけで、
タスクスケジューラの登録 と デスクトップのショートカット は 適宜補正される
Option Explicit
Dim My, MySh, Fs, ShApp
Set My = WScript
With My
Set ShApp = .CreateObject("Shell.Application")
Set MySh = .CreateObject("WScript.Shell")
Set Fs = .CreateObject("Scripting.FileSystemObject")
End With
Const vbWq = """"
Const strSys = "C:\Windows\System32"
Const schName = "amami\PSO2yomi"
Const appName = "PSO2yomi.exe"
Const procName = "pso2.exe"
Const delayTime = "0005:00"
Const scName = "PSO2yomi"
Const scD5Name = "PSO2yomiD5"
Dim strRoot, strD5Full
Dim strDesktop, strWs
strWs = Fs.BuildPath(strSys, "wscript.exe")
strDesktop = MySh.SpecialFolders("Desktop")
strRoot = Fs.GetParentFolderName(My.ScriptFullName)
strD5Full = Fs.BuildPath(strRoot, scD5Name & ".vbs")
Dim schtasks, strAppPath, strConfPath, strSch
schtasks = Fs.BuildPath(strSys, "schtasks.exe")
strAppPath = Fs.BuildPath(strRoot, appName)
strSch = "/create /f /it /sc onevent /rl highest /tn " & vbWq & schName & vbWq & _
" /tr " & vbWq & "'" & strAppPath & "'" & vbWq & " /ec Application " & _
"/mo *[System[Provider[@Name='" & procName & "']]] /delay " & delayTime
On Error Resume Next
setSchedule strSch
scCreate schtasks, "/Run /TN " & schName, strRoot, scName, strDesktop, strAppPath, 7
scCreate strWs, vbWq & strD5Full & vbWq, strRoot, scD5Name, strDesktop, strAppPath, 7
ShApp.ShellExecute strWs, vbWq & Fs.BuildPath(strRoot, "confCopy.vbs") & vbWq , "", "runas", 0
Set ShApp = Nothing
Set Fs = Nothing
Set MySh = Nothing
My.Quit
Function setSchedule(setSch)
ShApp.ShellExecute schtasks, setSch, "", "runas", 0
End Function
Function scCreate(strTarget, strParameters, strWorkFolder, _
strDescription, strScSetTarget, strIcon, nWindow)
Dim strParentFolder, strBaseName, strFileName
Dim strExtention, strCreate
Dim objSc
strBaseName = Fs.GetbaseName(strTarget)
strFileName = Fs.GetFileName(strTarget)
strExtention = Replace(strFileName, strBaseName, "")
strParentFolder = Fs.GetParentFolderName(strTarget)
If strDescription = "" Then
strDescription = strBaseName
End If
If strWorkFolder = "" Then
strWorkFolder = strParentFolder
End If
If strScSetTarget = "" Then
strScSetTarget = strParentFolder
End If
strCreate = Fs.BuildPath(strScSetTarget, strDescription & ".lnk")
If Fs.FileExists(strCreate) Then
Fs.DeleteFile strCreate, True
End If
If strIcon = "" Then
strIcon = strTarget
End If
If Fs.FileExists(strIcon) Then
Else
strIcon = strTarget
End If
Set objSc = MySh.CreateShortcut(strCreate)
With objSc
.TargetPath = vbWq & strTarget & vbWq
.Arguments = strParameters
.WorkingDirectory = strWorkFolder
.WindowStyle = nWindow
.Description = strDescription
.IconLocation = strIcon & ",0"
.Save
End With
End Function |
|
■ confCopy.vbs
設定ファイル [psuyomi2.config] が 既存の場合、システムフォルダへ複製する。
ファイルの書き込みに際して UACを介する必要がある為、Setup.vbs から呼び出して用いる。
Option Explicit
Dim My, Fs, ShApp
Set My = WScript
With My
Set Fs = .CreateObject("Scripting.FileSystemObject")
End With
Const vbWq = """"
Const strSys = "C:\Windows\System32"
Const strWOW = "C:\Windows\SysWOW64"
Const appConf = "psuyomi2.config"
Dim strRoot, strConfPath
strRoot = Fs.GetParentFolderName(My.ScriptFullName)
strConfPath = Fs.BuildPath(strRoot, appConf)
On Error Resume Next
If Fs.FileExists(strConfPath) Then
If Fs.FolderExists(strWOW) Then
Fs.CopyFile strConfPath, strWOW & "\", False
Else
Fs.CopyFile strConfPath, strSys & "\", False
End If
End If
Set Fs = Nothing
My.Quit |
|
■ PSO2YomiD5.vbs
スクリプト実行開始から 5分後にPSO2Yomiをタスクスケジューラから起動する。
[Setup.vbs] で作成されるショートカット [PSO2yomiD5] で 起動出来る。
このスクリプトは、PSO2本体を起動する前に実行して用いる・・・
PSO2 フルスクリーン稼動の裏で、ひっそりと PSO2yomi を遅延スタートさせるコトが可能。
スクリプトの中に ログインパスワードをセットしておけば、クリップボードに格納する。
クリップボードは、PSO2Yomi起動直前に初期化される・・・ その時点でログインが済んでいる前提。
Option Explicit
Dim My, MySh, ShApp
Set My = WScript
With My
Set MySh = .CreateObject("WScript.Shell")
Set ShApp = .CreateObject("Shell.Application")
End With
Const vbWq = """"
Dim schtasks, strPass
strPass = "{PSO2LoginPassword}"
schtasks = "C:\Windows\System32\schtasks.exe"
On Error Resume Next
ClipSet strPass
My.Sleep 300000
ClipSet ""
ShApp.ShellExecute schtasks, "/Run /TN amami\PSO2yomi", "", "", 0
Set ShApp = Nothing
Set MySh = Nothing
My.Quit
Function ClipSet(strTarget)
Dim exClips
exClips = "cmd /c " & vbWq & "echo " & strTarget & "| clip" & vbWq
MySh.Run exClips, 0
My.Sleep 300
End Function |
赤文字の部分を各位で書き換えて使う。
少し 非実行箇所を有効化するだけで、PSO2ランチャの起動から 順番に処理出来るようにはしてあるのだが、
最初だけ user.pso2ファイル(ウィンドウ位置など)が初期化される(´ヘ`;) ・・・試用はしたが実運用はしておらず、有効化は推奨しない。
仮に、もし 有効にする場合は、
に 格納されている user.pso2 の バックアップを取り、自己責任にて。 |
|
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。