- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
Hirdetés
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
ph A cég megoldása centralizált vezérelhetőséggel, masszív radiátorral és robusztus ventilátorokkal igyekszik vásárlásra csábítani.
-
Samsung Univerzum: Így ismerhető meg a Galaxy AI bármilyen telefonon
ma A Try Galaxy webalkalmazás kontrollált környezetben mutatja meg, mit tud a One UI 6.1-es rendszer és a mesterséges intelligencia.
Új hozzászólás Aktív témák
-
kampi_
csendes tag
Sziasztok!
Szeretnék csinálni, egy olyan programot, aminek kb ez lenne a működési elve, hogy van egy .txt (pl.arget.txt) és van egy másik (pl.:what.txt). A target.txt-ben csak gépnevek vannak. Minden gép domainban van. Ha elindítom a progit, akkor a target.txt-ből kiolvassa a gépneveket, és minden gépen lefutattja a what.txt-ben megadott file-szerveren lévő fájlt. Ez így medoldható szerintetek? Mert én csak leginkább olyan megoldást találtam, hogy külön csinálok egy kliens progit, amit minde gépre fel kell tennem, és egy szerver progit, amit meg ugye én vezérelek, hogy mit csináljon éppen a progi. A kérdés az lenne, hogy ahogy én leírtam (nem a kliens-szerver megoldással) megoldható-e valahogyan a progi amit szeretnék, és ha igen akkor egy két ötletet is kérnék, hogy nagyjából miket kellene hozzá használnom.
Előre is ksözi szépen a segítséget!
-
-
kampi_
csendes tag
Utoljár 4-5 éve programoztam rendesebben, szóval mind a kettő problémát jelent Bár most eszembe jutott, hogy olyan progit tudok csinálni, ami meghívja a psexec-et és ott paraméteresen átadom neki az épp aktuális gépnevet. Legalábbi remélem, hogy menni fog Köszi szépen a segítséget
-
kampi_
csendes tag
Sziasztok!
Tudnátok nekem mondani egy függvényt, aminek segítségével C-ben tudok egy külső programot futtatni paraméterekkel?? Én így próbáltam :
execl("psexec.exe","\\\\target -i -c d:\\kampi\\map.bat",NULL);
A target az egy változó, ami mindig egy épp aktuális gépnevet tartalmaz amit fájlból olvas ki, de így nem műkődik sajnos.
Előre is köszönöm a segítséget!
-
kampi_
csendes tag
válasz Fire/SOUL/CD #993 üzenetére
Hi!
Tehát ha jól értem, akkor elvileg ebben a formában működnie kellene, ugye?
execl("psexec.exe","\\\\target -i -c d:\\kampi\\map.bat",NULL);
Csak az volt a gáz ezzel, hogy a "target" változót nem értelmezte rendesen, mert a "\\target" nevű gépen akarta lefutattni a progit, pedig pont az lenne a lényege, hogy a target az változik. Kiolvas egy gépnevet egy fájlból és azon a gépen lefut a progi, aztán kiolvassa a következőt és megint lefut. Mondjuk azóta variáltam még, csak sajnos legkésőbb hétfőn este tudom majd kipróbálni....
Másik kérdés. Mielőtt ez a rész lefutna, akarok egy olyat, hogy megpingelje az összes gépet ami a fájlban van, mert ha a psexec-et egy olyan gépen akarom futtatni, ami nem elérhető akkor leáll a progi. Ezért szertnék olyat csinálni, hogy előtte megpingelek minden gépet ami a fájlban van, és ha elérhető, akkor kiírja egy fájlba, ha meg nem akkor egy másik fájlba, és így tuti lefutna végig a progi rendesen. A kérdés csak az, hogy hogyan tudom a ping visszatérési értékét vizsgálni?? Nincs erre valamilyen ötletetek, vagy programrészleteteket, ami ha lefutott a ping akkor pl.: visszaad 0-át, ha nem elérhető, akkor 1-et, ha meg valamilyen hiba van akkor 2-vel. Mert így már tudnám kezelni rendesen.
Köszi a segítséget!
-
kampi_
csendes tag
Sziasztok!
Egy gyors kérdésem lenne. Van egy gépnév mint pl:: computer1234 ebből szeretnék én egy olyat, hogy az utolsó 4 karakter ténylegesen int tipusú legyen ne char. Tudnátok ebben segíteni. Nekem sehogysem jön össze. Nagyon fontos lenne!
Előre is köszönöm a segítséget!
Üdvampi
-
kampi_
csendes tag
Sziasztok!
Szeretnék csinálni, egy olyan programot, aminek az a lényege, hogy egy fájlból kiolvasom programok elérési útvonalait és megniytom azokat a programokat. Ha bezártam őket, akkor megnyitja megint. Odaáig eljutottam simán, hogy createprocess-el megnyitom a programokat, de hogyan tudom figyelni, hogy bezáródott-e? Tudnátok ebben segíteni?
(system függvény használata azért nem jó, mert az megvárja amíg bezáródik a megnyitott alkalmazás, és addig megáll a program. Nekem viszont pont az kellene, hogy egyszerre nyitok meg mindent, és ha akármelyik alkalmazást bezárom, akkor azt újraindítja)
Előre is köszi a segítséget!
kampi
-
kampi_
csendes tag
válasz sghc_toma #1069 üzenetére
Hi!
Köszönöm a sok segítséget, de ehhez én még kevés vagyok
Próbálkoztam a WaitForMultipleObjects , de az nem igazán jött össze. Úgyhogy maradtam a te megoldásodnál. Ami egyszerűbbnek tűnik, csak az a bajom, hogy nem tudom hogyan kell HANDLE-t kérni. Én így próbáltam:HANDLE handle;
handle = OpenProcess(READ_CONTROL, false, proc_data[1].proc_id);
De ha itt kiiratom a handle-t akkor csak valamilyen egyre növekvő számokat kapok vissza. Tudnál ebben segíteni?
Előre is köszönöm!
kampi
-
kampi_
csendes tag
Bocs, megint én.
Azt elfelejtettem megírni, hogy ha a handle==NULL mint ahogy mondtad, akkor újra megnyitnám a bezárt process-t, de soha nem lesz NULL.
Köszi a segítséget.
kampi
-
kampi_
csendes tag
Sziasztok!
Az előző kérdéseimet már megoldottam, de most felmerült egy újabb. Szóval ugye egy olyan progit csinálok, ahol egy fájlban megadom a programok elérési útonalait, és a progi elindítja őket.Ha bezárom valamelyik általam megnyitott progit akkor pedig megnyitom újból. Most már minden szép és jó, viszont felmerült egy olyan probléma, hogy csa kettőt hajlandó megnyitni a program. Ez lehet a createprocess miatt? Itt a program is:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#define Buf_Size 16*1024
struct proc {
char proc_name[300];
int proc_id;
};
void file_exists(const char * filename);
void filempty(char * filename);
void createproc (char * str, int i, proc *);
int count(char * file);
struct proc proc_data[3];
int main ()
{
int i;
FILE *appfile;
char tmp[Buf_Size];
bool fute;
int current,ret,line;
current=0;
line=0;
file_exists("Application.txt");
filempty("Application.txt");
line = count("Application.txt");
//struct proc proc_data[line];
appfile = fopen("application.txt","r");
while ( fgets(tmp, sizeof tmp, appfile) != NULL )
{
createproc(tmp,current,proc_data);
current++;
}//while
fclose(appfile);
i=0;
while (1)
{
if (i==line) i=0;
current++;
Sleep(2000);
HANDLE phandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, proc_data[i].proc_id);
if (phandle==NULL) createproc(proc_data[i].proc_name,current,proc_data);
CloseHandle(phandle);
i++;
}//while
}//main
void createproc (char * str, int i,proc *proc_data)
{
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
StartInfo.wShowWindow = SW_HIDE;
CreateProcess(NULL, str, NULL, NULL, false, 0, NULL, NULL, &StartInfo, &ProcInfo);
strcpy(proc_data[i].proc_name,str);
proc_data[i].proc_id = ProcInfo.dwProcessId;
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
}//createprocHa valaki lát benne hibát legyen szíves szóljon, mert én nem találom, és fontos lenne! Vagy ha esetleg más megoldást tudtok mondani, amivel 2-nél több alkalmazást tudok megnyitni (ha esetleg a createprocess lenne a ludas) akkor jelezzétek!
Előre is köszönöm a segítséget!
kampi
-
kampi_
csendes tag
válasz Jester01 #1086 üzenetére
Hi!
Igen egyenlőre tényleg 3 processznak van helye, mert most csak tesztelem. De ettől függetlenül is, csak kettőt nyit meg! Az fgets előtt megnézem, hogy létezik-e fájl, és hogy üres-e? Azt tény, hogy azt nem tudom hogy lehet megnézni, hogy üres-e egy sor, vagy hogy az egész megvan-e, de ha te tudod, akkor elmondhatnád Az OpenProcess elvileg NULL-t ad vissza. Legalábbis én azért gondolom, mert ha nem lenne NULL akkor nem teljesülne ez a feltétel : if (phandle==NULL) createproc(proc_data[i].proc_name,i,proc_data); De teljesül mert ha bezárom, akkor megnyitja megint a process-t, tehát teljesülnie kell,nem? A while(1) cilusbanpedig csak elfelejtettem átírni a current-et i-re. De már kijavítottam. De ettől függetlenül azt nem mondtad meg, hogy miért csak kettő process nyílik meg és nem több? Vagy ez lehet ezek a hibák miatt? A CloseHandle-es részt nem igazán értem hogy mire gondoltál. Sajnos ezeket a handleket meg a createprocess-t nem teljesen vágom, hogy hogyan műkődnek. Ezért is kértem segítséget
Kampi
-
kampi_
csendes tag
válasz Jester01 #1088 üzenetére
Hi!
Már rájöttem mi volt a baj! Ugye a fájl tartalma így nézett ki pl, hogy :
notepad
maspaint
notepadÉs az volt a gáz, hogy ugye a sor végén volt egy "\n". Na ezért indult el scak kettő. Levágtam a soremeléseket és már jó is. Hibátlanul megy. 13 processra próbáltam ki, és megy simán. Azért köszönöm a segítséget
Az rendben van hogy a hossza nulla, de hogy nézem meg egy sor hosszát?
fgets(tmp, sizeof tmp, appfile) == NULL . Erre gondolsz?És hogyan lehetne levágott egy sor? Gondolom ha nem férne bele a tmp-be,nem? De azért 16 Kb-ba már csak belefér minden
Köszi mégegyszer a segítséget!
kampi
-
kampi_
csendes tag
Sziasztok!
Fennti progim működik úgy ahogy kell, de felmerült egy probléma. Win 2000 esetén mindig az utolsó process ablakát teszi aktívvá. Erre tudnátok valami megoldást, hogy hogyan tudnám azt megcsinálni, hogy ne tegye mindig az utolsó processt aktívvá?
Előre is köszi a segítséget!
kampi
-
kampi_
csendes tag
Sziasztok!
Megint lenne egy jó kérdésem. Hogyan tudom C-ben lekérdezni egy gép MAC címét? Van erre valami függvény, vagy nekem kell megcsinálni? Meg az is érdekelne, hogy ha van egy gép, ami ki van kapcsolva, de háló és táp rá van dugva, akkor le tudom-e kérdezni a MAC címét valahogyan?
Előre is köszi a segítséget!
kampi
-
kampi_
csendes tag
Sziasztok!
Tudja valaki, hogy hogyan lehet megoldani C-ben azt, hogy létrehozok egy process-t, de úgy mintha run as-szel futttatnám? Tehát bekérem a felhasználónevet, meg a jelszót, meg hogy milyen process process-t nyissak meg, és az eredmény az hogy megnyílik a program csak úgy mintha az adott felhasználó nevében nyitnám meg.
Thx, kampi
-
kampi_
csendes tag
Hi!
Tudja valaki hogy hogyan kell használni a CreateProcessWithLogonW fv-t? Vagy csak én vagyok béna, és azért nem jó?
Így próbálom,de nem történik semmi, a CreateProcessWithLogonW mindig 0-t ad vissza,vagyis valamilyen hiba van,csak nem találom meg hogy mi?
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
int bFuncRetn = CreateProcessWithLogonW(
(LPCWSTR)user,
(LPCWSTR)domain,
(LPCWSTR)password,
LOGON_WITH_PROFILE,//LOGON_NETCREDENTIALS_ONLY,
(LPWSTR)applicationname,
NULL,
CREATE_UNICODE_ENVIRONMENT,//CREATE_NEW_PROCESS_GROUP,
NULL,
NULL,
(LPSTARTUPINFOW)&StartInfo,
&ProcInfo
);CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
printf("\n\nCreateProcessWithLogonW returns :: %d", bFuncRetn);Előre is köszönöm a segítséget!
kampi
-
kampi_
csendes tag
Hi!
A GetLastError 1326-ot ad vissza, vagyis Logon Failure-el szállt el. Közben rájöttem, hogy az volt a gáz, hogy nem Unicoe típust hazsnáltam, hanem csak sima char-t nem wchar_t -t. De ezt már kijavítottam. Most az a bajom, hogy ha lokális felhasználóval akarok egy process-t nyitni, akkor műkődik, viszont ha egy olyan userral ami domain-tag akkor márnem megy. GetLastError szintén 1326-ot ad vissza.
Valakinek valami ötlet?
Előre is köszi!
kampi
-
kampi_
csendes tag
Hi!
Boccs, hogy ennyit írok. Szóval mostmár sikerült megcsinálni. A LOGON_WITH_PROFILE-t kellett átírni LOGON_NETCREDENTIALS_ONLY-ra. Most viszont az a bajom, hogy a process elindul, de a másik user neve alatt, hanem vagy az enyém alatt, vagy pedig system-ként látja a taskmanager. Ez mitől lehet? Ebben segítsetek légyszíves, mert fontos lenne.
Köszönöm!
kampi
-
kampi_
csendes tag
Sziasztok!
Tudna valaki segíteni nekem a CreateProcessWithLogonW függvénnyel kapcsolatban?
A problémám az vele, hogy létre tudok hozni egy processt pl Total commandert, de:
- bennt a cégnél műkődik is, mert egy admin usert adok meg, és hozzáférek olyan dolgokhoz amikhez csak ezzel a userral tudok. Ezzel eddig semmi gáz. Ha megnézem Task Managerben, akkor ott viszont nem úgy látszik, hogy az admin userrel futtatom a process-t hanem a SYSTEM futtatja a process-t. Na mindegy, végülis műkődik, csak gondoltam megkérdem ezt is hátha valaki tudja hogy miért?
- otthon viszont(hazaviszem a laptopom) megpróbálom ugyanezt (semmit nem változtattam a kódon) és meg akarom nyitni az admin userrel ugyanúgy a Total commandert (már be voltam jelentkezve a gépre vele, így létrejöt a profil, tehát elvileg már akármit tudok run as-ként futtatni), és meg is nyílik, viszont itt már nincsenek meg a jogaim. Most nem hálózati jogokra gondolok, hanem pl az a user amivel be vagyok lépve, nem admin, tehát pl nem tudok egy fájlt létrehozni a c:\-ben. Az admin userrel viszont simán tudok. Van egy lokális admin user is, azzal is megpróbáltam. Megadtam a usert, jelszót, domainnak meg a gépnevet, és ugyanúgy nincs jogom hozzá. Mindkét esetben (otthon az admin és a lokál admin esetében is) task managerben úgy látszik hogy a processt az a user futtaja aki be van jelentkezve.Erre van valakinek valami ötlete?
Előre is köszi a segítséget!
Kampi
-
kampi_
csendes tag
Sziasztok!
Adott ez a kód:
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
TOKEN_PRIVILEGES tp;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
HANDLE handle = NULL;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ALL_ACCESS, &handle)) printf("\nOpenProcessError");
if (!LookupPrivilegeValue(NULL,SE_TCB_NAME,
//SE_TCB_NAME,
&tp.Privileges[0].Luid)) {
printf("\nLookupPriv error");
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes =
SE_PRIVILEGE_ENABLED;//SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(handle, FALSE, &tp, 0, NULL, 0)) {
printf("\nAdjustToken error");
}
i = LogonUser(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &handle);
printf("\nLogonUser return : %d",i);
i = GetLastError();
printf("\nLogonUser getlast : %d",i);
if (! ImpersonateLoggedOnUser(handle) ) printf("\nImpLoggedOnUser!");
i = CreateProcessAsUser(handle, "c:\\windows\\system32\\notepad.exe",NULL, NULL, NULL, true,
CREATE_UNICODE_ENVIRONMENT |NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL,
&StartInfo, &ProcInfo);
printf("\nCreateProcessAsUser return : %d",i);
i = GetLastError();
printf("\nCreateProcessAsUser getlast : %d",i);
CloseHandle(handle);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);A domaint, user, és passwordot egy fájlból olvasom be. A probléma az, hogy a CreateProcessAsuser mindig 1314-es hibával száll el, ami "A required privilige is not held by the client". A kérdés mit csinálok rosszul, vagy hogyan tudnék jogot adni a handle-nek? Gondolom annak kellene.
Előre is köszi a segítséget!
kampi
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- iPad Pro 11 WiFi 128GB M1 (3rd gen. 2021) + Apple Pencil 2
- GAMER PC - NZXT - RTX 3060Ti 8GB - i7 7700 - 32GB DDR4 - 500GB M.2 Nvme SSD - 1TB HDD
- BONTATLAN Új Iphone 15 PRO 128-512GB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- ÚJ Bontatlan Macbook Pro 16 M3 Pro MAX 14 30GPU 96GB 2TB Magyar billentyűzet Azonnal átvehető.
- 5% kedvezmény a Cammus szimulátor termékeihez.