llde / xOBSE

Oblivion Script extender source
251 stars 36 forks source link

On Oblivion startup: "Couldn't inject dll." #178

Open backlabs1 opened 2 years ago

backlabs1 commented 2 years ago

Description

When starting Oblivion on Windows 7 with xOBSE 22.7 installed, an error is presented: Couldn't inject dll.. The game still starts up and runs after the error is dismissed, but the game crashes much more frequently during play.

Reverting to xOBSE 22.6.1 removes the error and reduces the number of game crashes.

According to chambcra on The Nexus Forums, this problem is caused by "Game Explorer" on Windows 7. I do not know if there is a way to fix this with xOBSE, but I thought it would be helpful to document it here anyway.

Workaround

Again according to chambcra, the workaround is to disable gameux.dll. The following worked for me on Windows 7 64-bit.

  1. Make sure your folder options are set with Hide extensions for known file types disabled.
  2. Locate the file:
    1. On Windows 7 64-bit systems, this file is found at C:\Windows\SysWOW64\gameux.dll.
    2. On Windows 7 32-bit systems, this file is found at C:\Windows\System32\gameux.dll.
  3. Change file owner:
    1. Right-click on the file and open Properties.
    2. Open the Security tab and click Advanced.
    3. Open the Owner tab and click Edit….
    4. Select the Administrators entry and click OK.
    5. Close all the dialogs.
  4. Change permissions for Administrators group:
    1. Right-click on the file and open Properties.
    2. Open the Security tab and click Edit….
    3. Click the Administrators entry and check the Allow box for Full control.
    4. Click OK and then Yes and close the file properties dialog.
  5. Rename the file to gameux.dll.bak.
  6. You may need to restart.

See also

For more information, see:

Dredd893 commented 2 months ago

GameUxFixed-Ubeogesh.zip GameuxFixed-Ubeogesh.docx

To fix things instantly.

The bat content:

Echo :dsssssy. shoooyo yhoooo. yhooooh- -dsoooy+ hyoooo hsoooy: .d: /h` Echo. Echo =============================================================================== Echo == == if not exist %windir%\%wd%\gameux.dll goto RestoreGameUX

:FixGameUX Echo == The script will resolve your Game Explorer aka Rundll32.exe problem. == Echo == Game explorer will work but some functionality may become unavailable == Echo == Press any key to fix or close the window if you're not sure == Echo == == Echo == You may run the script again to restore... == Echo == == Echo ===============================================================================

Pause >nul Echo. takeown /f %windir%\%wd%\gameux.dll >nul IF %ERRORLEVEL% EQU 0 Echo Ownership taken... Echo. cacls %windir%\%wd%\gameux.dll /E /P %username%:F >nul IF %ERRORLEVEL% EQU 0 Echo premissions gained... Echo. ren %windir%\%wd%\gameux.dll gameux.dll.Ubeogesh >nul IF %ERRORLEVEL% EQU 0 Echo File renamed! Congratz! Games will now launch! GOTO End

:RestoreGameUX Echo == Press any key to restore Game Explorer (unfix) == Echo == == Echo =============================================================================== pause >nul Echo. ren %windir%\%wd%\gameux.dll.Ubeogesh gameux.dll IF %ERRORLEVEL% EQU 0 ( Echo gameux.dll restored! GOTO End) ELSE ( Echo. Echo Could not restore... have you deleted the file or changed permissions? Echo And look at the error above ^;-^))

:End Echo. Echo http://ubeogesh-things.blogspot.com/ Echo. Echo Press any key to exit Pause >nul

::please credit Ubeogesh when redistributing the script

llde commented 2 months ago

isn't better to just add the modified dll into the game folder? the windows loader should take care of overrides Also please avoid attaching these kind of DLL here, prefers to link where the resource was found, and if possible check wethever the original file have a source somewhere