Hi,
wie verändere ich mit einem von mir geschriebenen Programm, welches als Dienst läuft, Registry Einträge?
Im folgenden Code des Diensts wird das die Datei "test.txt" erstellt, jedoch der Registry Eintrag, den ich eigentlich verändern will bleibt unverändert. Die Datei habe ich nur zum testen des Diensts erstellt (der ja somit funktioniert).
Führe ich genau den gleichen Code zum ändern der Registry in einem eigenen/"leeren" Programm aus (nicht als Dienst) so funktioniert er![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Bin hier total verwirrt und hoffe jemand weiß Rat.
Freue mich auf Hilfe,
PowerAzor
P.S. Falls es wichtig ist, ich arbeite hier auf Vista.
wie verändere ich mit einem von mir geschriebenen Programm, welches als Dienst läuft, Registry Einträge?
Im folgenden Code des Diensts wird das die Datei "test.txt" erstellt, jedoch der Registry Eintrag, den ich eigentlich verändern will bleibt unverändert. Die Datei habe ich nur zum testen des Diensts erstellt (der ja somit funktioniert).
Code:
void WINAPI ServiceMain( DWORD /*argc*/, TCHAR* /*argv*/[] )
{
// initialise service status
serviceStatus.dwServiceType = SERVICE_WIN32;
serviceStatus.dwCurrentState = SERVICE_STOPPED;
serviceStatus.dwControlsAccepted = 0;
serviceStatus.dwWin32ExitCode = NO_ERROR;
serviceStatus.dwServiceSpecificExitCode = NO_ERROR;
serviceStatus.dwCheckPoint = 0;
serviceStatus.dwWaitHint = 0;
serviceStatusHandle = RegisterServiceCtrlHandler( gszServiceName, ServiceControlHandler );
if ( serviceStatusHandle )
{
// service is starting
serviceStatus.dwCurrentState = SERVICE_START_PENDING;
SetServiceStatus( serviceStatusHandle, &serviceStatus );
// Create the Controlling Event here
ServiceControlEvent = CreateEvent( 0, FALSE, FALSE, 0 );
// Service running
serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP |
SERVICE_ACCEPT_SHUTDOWN);
serviceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus( serviceStatusHandle, &serviceStatus );
CRegKey rkDesktop;
if (rkDesktop.Open(HKEY_CURRENT_USER, _T("Control Panel\\Desktop")) == ERROR_SUCCESS) {
rkDesktop.SetStringValue(_T("TileWallpaper"), _T("1"));
rkDesktop.Close();
FILE* pTestFile;
fopen_s(&pTestFile, "C:\\test.txt", "w");
fprintf(pTestFile, "test erfolgreich");
fclose(pTestFile);
}
WaitForSingleObject( ServiceControlEvent, INFINITE );
// service was stopped
serviceStatus.dwCurrentState = SERVICE_STOP_PENDING;
SetServiceStatus( serviceStatusHandle, &serviceStatus );
// do cleanup here
CloseHandle( ServiceControlEvent );
ServiceControlEvent = 0;
// service is now stopped
serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN);
serviceStatus.dwCurrentState = SERVICE_STOPPED;
SetServiceStatus( serviceStatusHandle, &serviceStatus );
}
}
![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Bin hier total verwirrt und hoffe jemand weiß Rat.
Freue mich auf Hilfe,
PowerAzor
P.S. Falls es wichtig ist, ich arbeite hier auf Vista.