HOW TO: Multiple D2R Instances (requires two accounts)

also wont spend money until this is possible without senseless stuff like op described

  • streamers (playing on same realm) get shown 20+ public games on normal while im sitting here seeing 1 game (i can join the games he is seeing when i type in tho, so just show me aswell blizzard)
2 Likes

Just build another PC.

Mine says “Folder doesnt contain the correct version”. I click OK and log in to 2nd account, but then it says Games already playing

I Got the game version fixed. But still shows me as already playing the game

1 Like

I’m using another pc wiht Windows Desktop Manager. Actually, this is only one method. Need to wait an upgrade of Sandboxie, the one to solve this “problem” :slight_smile:

1 Like

This also happened to me for a couple days then stopped, but I was trying to run 3 windows. With 2 it has been solid. It may help to close the handle on the second instance. This seems to help keep both windows alive longer. Totally anecdotal though.

1 Like

Same, not sure what now

Can you share the contents of your bat file? Google Drive has flagged your zip so only the owner can download it to examine.

Weirdness, idk what they think is a virus. Probably cuz the .exe is packaged with the handle.exe file I’m guessing. This must be ran with handle64.exe in same directory as the batch script file.
Here’s a link containing the .bat and handle64.exe:
drive.google.com/drive/folders/1ycE0izXis0ynD1kUv0TLjREdT5rr3RxW?usp=sharing

And here’s the code for the .bat file:

@echo off
setlocal EnableDelayedExpansion

:: RAN AS ADMINISTRATOR? CHECK/FIX IF NOT ::
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo. &echo. &echo. &echo.
    echo    Run as admin to close handle.
    echo      Requesting privilages.... &echo.
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------



FOR /F %%I in ('handle64 -p D2R.exe -a "DiabloII Check For Other Instances" -nobanner') do set STOP_FLAG=%%I


:: PRIMARY SCRIPT ::
:while

    if %STOP_FLAG% == No (
	mode con cols=51 lines=9 >nul
	echo. & echo. & echo. 
	echo       #######################################
        echo                 ~ NO OPEN HANDLES ~          
	echo       #######################################
	echo. &echo.
        goto :DONE
    )

:: SET CONSOLE WINDOW SIZE ::
mode con cols=51 lines=16 >nul

:: SET PID/HEX VALUES FOR PROCESS HANDLE ::
    FOR /F "tokens=2,3 delims=:" %%A in ('handle64 -p D2R.exe -a ^"DiabloII Check For Other Instances^"') do (
        set pid=%%A
        set hex=%%B
    )


:: DEBUGGING OUTPUT ::
    echo      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    echo                [ DEBUG INFO ] 
    echo      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ & echo.


    FOR /F "tokens=1" %%X in ("%pid%") do (
        set pid=%%X
    )

    FOR /F "tokens=2" %%X in ("%hex%") do (
        set hex=%%X
    )

    echo         *.... STOP_FLAG: [ %STOP_FLAG% ]
    echo         *.......... PID: [ %pid%   ]
    echo         *.......... HEX: [ %hex%     ] &echo.

:: CLOSE HANDLE (suppressed output) ::
    handle64 -p %pid% -c %hex% -y -nobanner >nul &echo.


    FOR /F %%I in ('handle64 -p D2R.exe -a "DiabloII Check For Other Instances" -nobanner') do set STOP_FLAG=%%I & echo.

    if %STOP_FLAG% == No (
	echo     #######################################
        echo                 ~ Handle Closed ~
	echo     #######################################
	echo. &echo.
        goto :DONE

    ) else (

:: Theoretically this error should never be trigged, since admin privilages are taken care of at beginning of script. ::
        echo!!!!.... ERROR: RE-RUN PROGRAM AS ADMINISTRATOR 
    )
)


:DONE
    timeout /t 2 >nul

i identify as 2 people so i have the right to play 2 instances of any game

6 Likes

I identify as trinary

1 Like

alternative tutorial:

#1 get 2 licences and 2 accounts of the game
#2 install at least one instance of the game.
#3 copy the game’s folder elsewhere.
#4 make a shortcut to D2R.exe for each of the game executables ( one installed and one copied)
#5 right click each D2R.exe shortcut and go to properties, and ad a “-launch” without the quotes as a startup parameter. Google it if you don’t know how to do it properly.
#6 open battle.net app and login with first account. set the app to not login with last logged user, and to shutdown itself after launching a game.
#7 start the game with pressing play. the app should close itself and the game should launch.
#8 alt tab of the game launch battle.nt app choose to login with second account you have D2R in. login and close. next start the game from the second shortcut. and voila…

Please make sure your machinecan handle more than one copy of D2R at a time… a.k.a 32GB of ram and 8GB of vram would be a bare minimum to play two instances on low details…

1 Like

Hey thank you for this guide.

i was wondering if its possible to run 3 instances with this method?

Thanks for this. Now when everyone is typing about having separate accounts, are you saying full on BNet accounts, or just more D2 accounts, under the same BNet account?

I used to multibox with WoW, under my one Bnet account, I have multiple paid for WoW accounts… just curious if this is how this works as well, or on any second instance of D2, I would need to be logging in with another Bnet account (with obviously another paid for D2).

when i try to close the handle it says “Error opening process: The handle is invalid” can you help?

1 Like

Not at desk, but are you running Process Explorer as an administrator?

same question for me. Do we need 2 bnet accounts or can we buy another D2R on our usual bnet account??

going to buy another d2r soon,

will buy up to 5 more if blizz make this allowed from 1 bnet acc and add -skiptobnet and legacy graphics on startup option :slight_smile:

Is it possible to run two instances simultaneously through two local Windows accounts?
Do Windows account share same process tree?

Can I use the third account?

So I did everything you said there - ran process explorer as admin - found the session/checkforinsteances and closed handle but it didn’t work. When I launch 2nd battle net app it says “Now playing” and wont let me launch. Any ideas? thanks