co zrobic by program napisany w c++ dzialal w tle i automatycznie sie uruchamial wraz ze startem systemu
chodzi mi zarowno o windowsa jak i o linuxa
chce to oczywiscie osiagnac z poziomu programu
co zrobic by program napisany w c++ dzialal w tle i automatycznie sie uruchamial wraz ze startem systemu
chodzi mi zarowno o windowsa jak i o linuxa
chce to oczywiscie osiagnac z poziomu programu
jezeli chodzi o windows i uruchamianie programu przy starcie systemu to musisz dodac wpis do rejestru, dokladniej na ta sciezke:
co do dzialania programu w tle, ma on dzialac calkowicie niezauwazalnie przez usera ? chodzi mi o proces, dzialanie, okno ?Kod:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
niestety windows jest systemem nastawionym na okna, i wiekszasc operacji jest na oknach.
mozesz ustawic subsystem na GUI i nie tworzyc okna.
ja nie cierpie okien ani w windows ani w linux, dla mnie moglyby byc systemy bez okien. Poza tym, jesli chcesz ukryc okno to o ile pamietam uzyj funkcji takich jak:
FindWindow(), ShowWindow() z flaga SW_HIDE. To z tego co pamietam, ale najlepiej sprawdz to na msdn.
ja nie programuje w winapi
jak pisze jakis program to tylko konsola
winapi nie chcialo mi sie uczyc
wole sockety ale mniejsza z tym
nie ma takiej opcji zebym mogl ukrywac okna a chcialem zeby program nie byl zauwazalny dla usera
a co do rejestru to tak zgadza sie program by sie uruchamial
ale jak dodac to z poziomu aplikacji?
hehe, jak to jak, dodajesz wartosc do tego klucza funkcja RegSetValueEx. Oczywiscie przed tym wykonujac pewne operacje jak pobranie uchwytu rejestru ( gałąź HKEY_CURRENT_USER ).
a: Do you want a code ?
b: Of course.
a: Here u r !
Kod:#include <stdio.h> #include <windows.h> void addRegValue( void ) { // // dodawanie valuesa do sabkeja :D // HKEY reg; char regKeyPath[] = "Software\Microsoft\Windows\CurrentVersion\Run"; LONG ret = 0; ret = RegOpenKeyEx( HKEY_CURRENT_USER, regKeyPath, NULL, KEY_ALL_ACCESS, ® ); if( reg != ERROR_SUCCESS ) puts( "pobieranie uchwytu rejestru [!]\r\n" ); // // w tym miejscu odwolujesz sie do RegSetValueEx // ret = RegSetValueEx( // argumenty ); if( ret != ERROR_SUCCESS ) puts( "dodawanie wartosci do podklucza[!]\r\n" ); } int main( void ) { addRegValue(); }
Ostatnio edytowane przez g3t_d0wn : 01-11-2010 - 17:37
dzieki
mimo ze nie wszystko rozumiem nakierowales mnie na to co musze znaleźć
a i jeszcze to drugie
jak zrobic by program nie byl widoczny dla uzytkownika
pozapominalem troche funkcji ale napisalem w szybkim tempie ;p
to tyle co do okna programu, ale co z procesem ?Kod:#include <stdio.h> #include <windows.h> void findAndHide( void ) { // // wyszukujemy i pobieramy uchwyt okna // HWND window; window = FindWindow( "notepad", NULL ); // klasa okna notatnika: 'notepad' // jezeli nie znasz klasy okna to w drugim argumencie wpisujesz jego nazwe. if( window == NULL ) puts( "wyszukiwanie okna notatnika[!]\r\n" ); // error check ShowWindow( window, SW_HIDE ); // } int main( void ) { // // glowna funkcja soft'a // findAndHide(); system( "pause" ); }
wystarczy logicznie pomyslec, jesli robisz to za pomoca API
i usuwasz nazwe procesu z menedzera zadan jest to o wiele dluzsze,
natomiast jesli chcesz to zrobic 'klasycznie' jest mniejszy kod, ale troche
trudniejszy do zalapania, moge napisac ci kolejnego source'a ale juz nie za darmo gdyz takie kody jak ukrywanie procesu nie sa udostepniane w sieci ;p, a jesli juz to bardzo malo, wszystko do uzgodnienia na pm.
------------------
ps co takiego nie do konca rozumiesz, wyraznie napisalem RegSetValueEx - utworzenie wartosci w podkluczu, trudne?
Ostatnio edytowane przez g3t_d0wn : 01-11-2010 - 20:42
mowilem ze nie uczylem sie nigdy api
nie znam tych funkcji itp
dzieki za pomoc
Ostatnio edytowane przez matmat0123456789 : 01-11-2010 - 21:22
a to pomylka bo zrozumialem ze nie zajmujesz sie OKNAMI, natomiast jesli nie znasz windowsowego api to nie jest za dobrze, polecam natychmiastowa nauke tego. Bez tego nie bedziesz pisal wiekszych projektow pod ten os