Page 2 of 2
Re: Cease fire on LAN
Posted: 07 Apr 2024, 12:40
by Traumwelt
First the error message GameHelper.dll appears, then Exception error.
The settings cannot be saved, when I restart the Lauchner, the hooks are there again.
Every time I start the 1.5 launcher, the administrator window also appears.
- 00.jpg (102.37 KiB) Viewed 928 times
Edit:
I will try again later with moving the DirectX file...
Re: Cease fire on LAN
Posted: 08 Apr 2024, 11:11
by Dr.MonaLisa
It looks like the Launcher is trying to generate some files, and it asks for the administration permissions to be able to write in the game folder. Do you actually type the admin password there, or refuse it?
Re: Cease fire on LAN
Posted: 08 Apr 2024, 18:41
by Traumwelt
I press "Current user" without admin password...
This is just an example picture from the internet
Re: Cease fire on LAN
Posted: 08 Apr 2024, 23:29
by Dr.MonaLisa
On Windows XP you're supposed to start the launcher with administrative permissions the first time after installation. So if you haven't done that, it's required to do.
Have you tried with moving out DLL or disabling Directx 9 in Up1.5 Settings?
Re: Cease fire on LAN
Posted: 10 Apr 2024, 02:44
by Traumwelt
I have tried everything possible, no chance to get the game running with the patch.
I think it's because of the GOG version.
I will buy an original CD / DVD version and test it then.
Re: Cease fire on LAN
Posted: 10 Apr 2024, 18:29
by Dr.MonaLisa
I don't think it makes any difference which version it is though... WinXP has always acted weirdly, but if you made a test on a clean windows xp installation in the virtual machine - it would probably work.
Re: Cease fire on LAN
Posted: 11 Apr 2024, 06:56
by Dr.MonaLisa
So probably this function fails:
Code: Select all
std::wstring GetProcessPathByPIDWs(DWORD PID)
{
ErrorCode14J_FailureStep = 5;
wstring ProcessPathToReturn = L"";
HANDLE Handle = OpenProcess(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE,
PID /* This is the PID, you can find one from windows task manager */
);
if (Handle)
{
ErrorCode14J_FailureStep = 6;
wchar_t Buffer[MAX_PATH];
//Fucking Winddows XP
HANDLE hReturnHandle = NULL;
HMODULE hNtDllModule = NULL;
typedef DWORD(WINAPI* MonaGetModuleFileNameExW)(
HANDLE hProcess,
HMODULE hModule,
LPWSTR lpFilename,
DWORD nSize
);
MonaGetModuleFileNameExW funcGetModuleFileNameExW = NULL;
bool LoadedK32GetModuleFileNameExW = false;
if((hNtDllModule = GetModuleHandleW(L"kernel32.dll"))) {
ErrorCode14J_FailureStep = 7;
if (funcGetModuleFileNameExW = (MonaGetModuleFileNameExW)GetProcAddress(hNtDllModule, "K32GetModuleFileNameExW")) {
LoadedK32GetModuleFileNameExW = true;
ErrorCode14J_FailureStep = 8;
}
}
if (!LoadedK32GetModuleFileNameExW) {
ErrorCode14J_FailureStep = 9;
if ((hNtDllModule = GetModuleHandleW(L"Psapi.dll"))) {
ErrorCode14J_FailureStep = 10;
if (funcGetModuleFileNameExW = (MonaGetModuleFileNameExW)GetProcAddress(hNtDllModule, "GetModuleFileNameExW")) {
LoadedK32GetModuleFileNameExW = true;
ErrorCode14J_FailureStep = 11;
}
}
}
if (LoadedK32GetModuleFileNameExW) {
ErrorCode14J_FailureStep = 12;
if (funcGetModuleFileNameExW(Handle, 0, Buffer, MAX_PATH))
//if (GetModuleFileNameExW(Handle, 0, Buffer, MAX_PATH))
{
ErrorCode14J_FailureStep = 13;
// At this point, buffer contains the full path to the executable
ProcessPathToReturn = Buffer;
}
else
{
ErrorCode14J_FailureStep = 14;
// You better call GetLastError() here
}
}
CloseHandle(Handle);
}
return ProcessPathToReturn;
}
It seems like in your Windows XP, there's a problem using "GetModuleFileNameExW" function from Psapi.dll. Quite strange because all functions were designed especially to work for new Windows versions, and the XP (before finally decided to drop the support).