-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Less invasive alternative to a system-wide installation #48
Comments
That sounds like a great idea. Admittedly I am not deeply knowledgable about Windows and how it loads DLLs, so that means that there are surely techniques (such as this one) that I'm unaware of that could be used with devreorder. Would you like to update the instructions in README and submit a PR? |
Just for the records, as I said in VFansss/mgs2-v-s-fix#26.. W7 already had absolute paths (in this case for Also take note that if programs are run as administrator, those user-defined CLSIDs may not be read for whatever unknown reason. |
Sounds good! Do you think it should replace a system-wide installation or be added alongside, with system-wide installation marked as "the very last resort, you almost certainly don't want to do it"? |
I'd at least say it's the last thing to try if all else fails and maybe mention warnings related to doing it (such as running afoul of anti-cheat systems), but I'd avoid saying "you almost certainly don't want to do it" because I bet there's going to be plenty of situations where it's still necessary for some reason. (In fact there's still been a few cases where, for some reason, a particular game uses DirectInput but never loads devreorder's version of dinput8.dll, even though it was installed to the Windows directory and alongside the game's executable.) It will be interesting to see how many cases this technique can cover, though. Obviously if this prevents most people from needing to modify the Windows directory, that's great. |
Created #49 to resolve this. Regarding the system-wide installation, I still think it should not be needed, but I can't say much else not knowing what do these offending games do. In cases where games ignore devreorder's dinput8.dll I would be more inclined to believe it's a configuration issue, rather than an odd way of loading the DLL (because there is no way the game/OS has any knowledge of dinput8org.dll). |
@CookiePLMonster Thanks! I've merged the PR. One other possible use case for the system-wide instructions is for when you just want every game on your system to use devreorder's DLL without having to manually copy it into every game folder, which is the case on my own gaming PC. But naturally I wouldn't recommend that for everyone. |
What about https://github.com/x360ce/x360ce/blob/master/x360ce/InputHook/HookCOM.cpp? kcat/dsoal#34 (comment) Then AFAICT the "windows 8" detail is a complete red herring, and all of this would also happen on previous OSs too. |
Currently, devreorder says this for cases when the game initializes DirectInput via COM:
This is a much more heavy-handed solution than necessary. It is possible to avoid messing with the system files, or even avoid requiring admin access by modifying DirectInput's CLSID definitions. Looking into the registry in a
HKEY_CLASSES_ROOT\CLSID
directory, starting from Windows 8, CLSID's related to DirectInput specify an absolute path todinput8.dll
, therefore games ignore your custom DLL placed in the game directory.The fix is trivial and can be applied to the current user only - replacing the path field (inside
InProcServer32
) with a relative path to the DLL (aka just the name) will revert to the "old" behaviour of first trying to load a DLL from the application directory, before getting it from the system directory.The original guide for this was approach written by John-Paul Ownby for IndirectSound. I created a revision of this guide that does not require using
regedit.exe
, and can be done from the Command Prompt without admin access.Naturally, for devreorder these steps should be taken for DirectInput interfaces, not XAudio/DirectSound interfaces, but the idea is the same.
The text was updated successfully, but these errors were encountered: