45 static int unselectText=0;
51 FILE *in = fopen(
"launcher.txt",
"r");
61 while(fgets(line,255,in))
68 cptr=line+(strlen(line))-1;
69 if ((*cptr==
'\r')||(*cptr==
'\n'))
75 strcat(line,
"\r\r\n");
77 SendDlgItemMessage(hwnd,
IDC_TEXT, EM_SETSEL, (WPARAM)lastsel, (LPARAM)lastsel );
78 SendDlgItemMessage(hwnd,
IDC_TEXT, EM_REPLACESEL, 0, (LPARAM)(line) );
79 SendDlgItemMessage(hwnd,
IDC_TEXT, EM_GETSEL, (WPARAM)
NULL, (LPARAM)&lastsel );
90 SendDlgItemMessage(hwnd,
IDC_TEXT, EM_SETSEL, -1, 0);
138 DBGMSG(
"PATCHFILE : "<<patchfile);
146 if (strcasecmp(patchfile+strlen(patchfile)-strlen(
".exe"),
".exe")==0)
152 regRetval=RegCreateKeyEx(
154 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
157 REG_OPTION_NON_VOLATILE,
163 if (regRetval==ERROR_SUCCESS)
165 RegSetValueEx(regKey,
"EXEPatch",0,REG_SZ,(
const uint8*)patchfile,strlen(patchfile)+1);
172 MessageBox(
NULL,message,title,MB_OK);
181 sprintf(
string,message,patchfile);
182 MessageBox(
NULL,
string,
"ERROR",MB_OK);
188 else if (strcasecmp(patchfile+strlen(patchfile)-strlen(
".rtp"),
".rtp")==0)
192 while(PeekMessage(&
msg,
NULL,0,0, PM_REMOVE))
194 TranslateMessage(&
msg);
195 DispatchMessage(&
msg);
197 HINSTANCE
hInst=LoadLibrary(
"patchw32.dll");
203 sprintf(
string,message,
"patchw32.dll");
206 MessageBox(
NULL,
string,title,MB_OK);
211 DBGMSG(
"Patch SKU = "<<skuIndex);
222 MessageBox(
NULL,message,title,MB_OK);
227 sprintf(patchArgs,
"\"%s\" .",patchfile);
228 int rtpErrCode=patchFunc(patchArgs,PatchCallBack,
TRUE);
232 DestroyWindow(dialog);
237 ERRMSG(
"Patch error: " << rtpErrCode);
246 char *cptr=patchfile;
249 while( (tempPtr=strchr(cptr,
'\\')) !=
NULL)
253 DBGMSG(
"VERSION TO = "<<version);
259 sprintf(
string,
"SKU%d",skuIndex);
262 ERRMSG(
"SKU is missing from config file!");
272 while((*(path.
get()))==
' ')
277 regRetval=RegOpenKeyEx(HKEY_LOCAL_MACHINE,path.
get(),0,
278 KEY_ALL_ACCESS,®Key);
279 if (regRetval!=ERROR_SUCCESS)
280 DBGMSG(
"Can't open reg key for writing");
281 regRetval=RegSetValueEx(regKey,
"Version",0,REG_DWORD,(
uint8 *)&version,
294 strcpy(notepad.
command,
"notepad");
295 strcpy(notepad.
args,
" launcher.txt");
307 else if (strcasecmp(patchfile+strlen(patchfile)-strlen(
".exn"),
".exn")==0)
311 strcpy(proc.
command,patchfile);
321 else if (strcasecmp(patchfile+strlen(patchfile)-strlen(
".web"),
".web")==0)
327 MessageBox(
NULL,message,title,MB_OK);
329 FILE *in=fopen(patchfile,
"r");
343 MessageBox(
NULL,patchfile,
"Patchfile vanished?",MB_OK);
353 TOKEN_PRIVILEGES tkp;
356 if (!OpenProcessToken(GetCurrentProcess(),
357 TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
363 LookupPrivilegeValue(
NULL, SE_SHUTDOWN_NAME,
364 &tkp.Privileges[0].Luid);
366 tkp.PrivilegeCount = 1;
367 tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
370 AdjustTokenPrivileges(hToken,
FALSE, &tkp, 0,
371 (PTOKEN_PRIVILEGES)
NULL, 0);
374 if (GetLastError() != ERROR_SUCCESS)
380 if (!ExitWindowsEx(EWX_REBOOT, 0))
385 MessageBox(
NULL,restart,
"OK",MB_OK);
390 while (GetMessage(&
msg,
NULL, 0, 0))
392 TranslateMessage( &
msg );
393 DispatchMessage( &
msg );
405 static int fileCount=0;
406 static int currFile=0;
411 while (PeekMessage(&
msg,
NULL, 0, 0, PM_REMOVE ))
413 TranslateMessage( &
msg );
414 DispatchMessage( &
msg );
446 MessageBox(
NULL,(
char *)
Param,errmsg,MB_OK);
448 FILE *out=fopen(
"patch.err",
"a");
450 fprintf(out,
"\n\nPatch Error: %s\n",ctime(&timet));
451 fprintf(out,
"%s\n",(
char *)
Param);
505 sprintf(
string,xofy,currFile,fileCount);
bit8 Create_Process(Process &process)
bit8 Wait_Process(Process &process, DWORD *exit_code)
HINSTANCE Global_instance
LPVOID(__stdcall *SnmpUtilMemAllocPtr)(IN DWORD bytes)
bit8 getString(IN Wstring &key, OUT Wstring &value)
char remove(sint32 pos, sint32 count)
sint32 getToken(int offset, char *delim, Wstring &out)
HWND Create_Patch_Dialog(void)
void Shutdown_Computer_Now(void)
__declspec(dllexport) LPVOID CALLBACK PatchCallBack(UINT ID
BOOL CALLBACK Update_Info_Proc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
void Apply_Patch(char *patchfile, ConfigFile &config, int skuIndex)
UINT(CALLBACK * PATCHFUNC)(LPSTR, PATCHCALLBACK, BOOL)
LPVOID(CALLBACK * PATCHCALLBACK)(UINT, LPVOID)