rendered paste body/*int _tmain(int argc, _TCHAR* argv[])
{
if(argc < 1)
return 1;
bool res;
HKEY Services, myService;
PWSTR thefeed;
BYTE *result = (BYTE*)malloc(50);
BYTE *resulta = (BYTE*)malloc(50);
wchar_t resd[50];
memset(&resd, 0, sizeof(resd));
DWORD buffer;
MessageBoxW(NULL, L"Testing", L"Test", MB_OK);
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Services", 0, 0, &Services) != ERROR_SUCCESS)
return 1;
if(RegOpenKeyEx(Services, argv[1], 0, 0, &myService) != ERROR_SUCCESS)
return 1;
RegQueryValueEx(myService, L"Prefix", NULL, NULL, result, &buffer);
wcsncpy(resd, (wchar_t*)result, 20);
wcscpy(thefeed, resd);
RegQueryValueEx(myService, L"Index", NULL, NULL, resulta, &buffer);
*resulta = *resulta | 0x30;
wcscat(thefeed, (wchar_t*)resulta);
wcscat(thefeed, L":");
HANDLE hnd = GetServiceHandle(thefeed, 0, 0);
if(hnd == INVALID_HANDLE_VALUE)
ActivateService(argv[1], 0);
else
res = DeregisterService(hnd);
if(res == true)
return 0;
return 1;
}*/
#define INITIALBUFFER 2048
#define INCREMENTS 1024
int _tmain(int argc, _TCHAR* argv[])
{
if(argc < 1)
return 1;
bool res;
HKEY Services, myService;
LPBYTE prefix = (LPBYTE) malloc(INITIALBUFFER);
LPBYTE index = (LPBYTE) malloc(INITIALBUFFER);
LPWSTR Device, devBuf;
DWORD buffer, dwRet, cbData, devlen;
buffer = INITIALBUFFER;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Services", 0, 0, &Services) != ERROR_SUCCESS)
return 1;
if(RegOpenKeyEx(Services, argv[1], 0, 0, &myService) != ERROR_SUCCESS)
return 1;
dwRet = RegQueryValueEx(myService, L"Prefix", NULL, NULL, prefix, &cbData);
while(dwRet == ERROR_MORE_DATA)
{
buffer += INCREMENTS;
prefix = (LPBYTE) realloc(prefix, buffer);
cbData = buffer;
dwRet = RegQueryValueEx(myService, L"Prefix", NULL, NULL, prefix, &cbData);
}
buffer = INITIALBUFFER;
//wcsncpy(resd, (wchar_t*)result, 20);
//wcscpy(thefeed, resd);
dwRet = RegQueryValueEx(myService, L"Index", NULL, NULL, index, &buffer);
while(dwRet == ERROR_MORE_DATA)
{
buffer += INCREMENTS;
index = (LPBYTE) realloc(index, buffer);
cbData = buffer;
dwRet = RegQueryValueEx(myService, L"Prefix", NULL, NULL, index, &cbData);
}
devlen = wcslen((LPWSTR)prefix);
devBuf = (LPWSTR) malloc(sizeof(*index));
_stprintf(devBuf, L"%d", *index);
devlen += wcslen(devBuf);
free(index);
Device = (LPWSTR) malloc(devlen*2);
wcsncpy(Device, (LPWSTR)prefix, 10);
wcsncat(Device, devBuf, 3);
wcscat(Device, L":");
HANDLE hnd = GetServiceHandle(Device, 0, 0);
if(hnd == INVALID_HANDLE_VALUE)
ActivateService(argv[1], 0);
else
res = DeregisterService(hnd);
free(Device);
free(devBuf);
free(prefix);
free(index);
if(res == true)
return 0;
return 1;
}