スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Hearthstone 非steamゲームに登録

今回はHearthstoneを非steamゲームとして登録する方法を紹介します。
普通に登録するだけだとHearthstoneを起動後すぐにOnline状態に戻ってしまいます。
やるのは自己責任でお願いします。

1.
メモ帳を開き、以下の文をコピペして、C:\Program Files (x86)\Hearthstone\ (64-bit Windows)
または C:\Program Files\Hearthstone\ (32-bit Windows). に「steamoverlay.vbs」の名前で保存します。




Launcher = "Hearthstone Beta Launcher.exe"
Client = "Hearthstone.exe"

' if nothing was passed in, we are starting from scratch, so start the launcher
If WScript.Arguments.length = 0 Then
Home = WScript.ScriptFullName
Home = Left(Home, InStr(Home, WScript.ScriptName)-1)

'run the launcher
Set objShell = WScript.CreateObject("Shell.Application")
objShell.ShellExecute Launcher, "", Home

' create the file that the elevated script will copy executables's path and commandline to
set fso = CreateObject("Scripting.FileSystemObject")
set tempfolder = fso.GetSpecialFolder(2)
tempname = tempfolder & "\" & "steam.tmp"
set tempfile = fso.CreateTextFile(tempname)
tempfile.close()

'run this script but signal that it needs to elevate by giving it the tempfile name as an argument
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "cscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " " & tempname, "", "runas", 2

WScript.Echo "Waiting for other script to finish..."
' check every second if the temporary file has been updated with the commandline info
Do While True
'check the filesize of the tempfile
set tempfile = fso.GetFile(tempname)
If tempfile.Size > 0 Then Exit Do
WScript.Sleep 1000
Loop

ExecutablePath = Home
set tempfile = fso.OpenTextFile(tempname)
CommandLine = tempfile.ReadLine
tempfile.close()

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute Client, CommandLine, ExecutablePath

fso.DeleteFile tempname
WScript.Quit
Else
' we are elevated now
WScript.Echo "Waiting for launcher to start client..."

'Get Windows Manager object
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")

' check every second for client that was launched by launcher
While True

'Get info on processes named Client
Set InstanceList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Client & "'")

for Each Instance in InstanceList
cmdline = Instance.CommandLine

'we found the client we care about
Instance.Terminate()

'remove the exe path and name from the cmdline
position = InStr(1, cmdline, """ ") + 1
cleanCmdLine = Right(cmdline, Len(cmdline) - position)

tempname = WScript.Arguments(0)
set fso = CreateObject("Scripting.FileSystemObject")
set tempfile = fso.OpenTextFile(tempname, 2)
tempfile.WriteLine(cleanCmdLine)
tempfile.close()

WScript.Quit
Next

WScript.Sleep 1000
Wend
End If




2.
steamのクライアントを起動して、普通に非steamゲームとしてhearthstoneを登録します。


3.
steamのライブラからHearthstoneを右クリックして、プロパティを開きます。
リンク先を"C:\Windows\System32\cscript.exe" "C:\Program Files (x86)\Hearthstone\steamoverlay.vbs"
作業フォルダを"C:\Windows\System32\"

参考サイト


これで起動してもOnline状態に戻ることはないと思います。
これを利用したらbattle.netの他のdiablo3やSC2も同じようにできるのかな。
今度やってみようと思います。
diablo3は別の方法があるそうなので、元気があればそのことも書こうかなと思ってます。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。