Lucjan_Inferno
Użytkownik
- Dołączył
- Wrzesień 8, 2008
- Posty
- 14
Elo. Znalazłem na tym forum mały art Grzona o usługach systemowych Tak srednio znam sie na winApi wiec nie wiem co może byc nie tak
I problem w tym że robi się wpis do usług, jest poprawna sciezka do pliku exe lecz po ponowym starcie systemu program który miał sie odpalić czyli przelicznik.exe to się nie odpala. Powie mi ktoś dlaczego ?
Nie interesują mnie inne metody autostartu ) Z racji iz chce to testować na maszynie gdzie jest zablokowany rejestr, autostart itd
#include <windows.h>
int main()
{
SC_HANDLE sh_manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(!sh_manager)
{
return false; //nie udalo sie otworzyc SCManagera
}
SC_HANDLE service_handle=CreateService(sh_manager,"nazwa_naszej_uslugi5","nazwa_naszej_uslugi5",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,"D:\\Pasek.exe",NULL,NULL,NULL,NULL,NULL);
if(!service_handle)
{
if(GetLastError()==ERROR_SERVICE_EXISTS)//usluga o tej nazwie juz istnieje
{
service_handle= OpenService(sh_manager,"nazwa_naszej_uslugi5",SERVICE_ALL_ACCESS);
}
else
{
CloseServiceHandle(sh_manager);//zamykamy uchwyty
CloseServiceHandle(service_handle);
return false;//nie udalo sie stworzyc uslugi
}
}
else
{
if(StartService(service_handle,0,NULL)==0)//jesli nie ma zadnych bledow no to mozemy wystartowac nasza usluge
{
WinExec("D:\\Przelicznik.exe", SW_SHOW);
if(GetLastError()==ERROR_SERVICE_ALREADY_RUNNING)
{
return true;//zostala juz wczesniej uruchomiona
}
}
}
CloseServiceHandle(sh_manager);//zamykamy uchwyty
CloseServiceHandle(service_handle);
return true;//w tym momecie nasza usluga juz chodzi i uruchomi sie tez przy nastepnym uruchomieniu
}
I problem w tym że robi się wpis do usług, jest poprawna sciezka do pliku exe lecz po ponowym starcie systemu program który miał sie odpalić czyli przelicznik.exe to się nie odpala. Powie mi ktoś dlaczego ?
Nie interesują mnie inne metody autostartu ) Z racji iz chce to testować na maszynie gdzie jest zablokowany rejestr, autostart itd