-
29.07.10 14:21 #1
- Registriert seit
- Jul 2003
- Ort
- Nottuln (NRW)
- Beiträge
- 627
Hi Leute,
ich habe eine Frage bezüglich einer C++ DLL die ich für ein Programm geschrieben habe welches nur C++ DLL's akzeptiert (leider, denn ich bin nicht gut in C++
)
Ich habe folgenden Code in einer Function um zu bestimmen ob ein bestimmter Prozess läuft:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
__declspec(dllexport) int _stdcall isRunning(char *vName) { string pName = vName; unsigned long aProcesses[1024], cbNeeded, cProcesses; if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) return -1; cProcesses = cbNeeded / sizeof(unsigned long); for(unsigned int i = 0; i < cProcesses; i++) { if(aProcesses[i] == 0) continue; HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, aProcesses[i]); char buffer[50]; GetModuleBaseName(hProcess, 0, buffer, 50); CloseHandle(hProcess); if(pName == string(buffer)) return 1; } return 0; }
Das ganze funktioniert auch sehr gut, leider aber nur (Vista/7) wenn man das Programm mit Admin-Rechten startet. Ist es irgendwie Möglich das gleiche zu erreichen ohne den Benutzer zu zwingen das Programm mit Admin Rechten zu starten?
Vielen Dank im Vorraus, ich hoffe ich habe mich verständlich genug ausgedrückt
Schönen Gruß,
JonathanGeändert von Operator_Jon (29.07.10 um 16:50 Uhr)
-
29.07.10 14:29 #2
Hallo,
ist zwar nicht eine komplette Antwort, aber unter Linux-Systemen kannst nachschauen, ob unter /proc/ ein Ordner mit der PID als Name existiert. In den Ordnern befindet sich auch die Datei "cmdline" mit der du den Namen des aufgerufenen Programms mitsamt Argumenten rausfinden kannst.
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
-
29.07.10 14:46 #3
- Registriert seit
- Jul 2003
- Ort
- Nottuln (NRW)
- Beiträge
- 627
Hm, das Programm ist leider Windows basiert und das konkrete Problem habe ich ab Vista aufwärts!
Gibt es denn so eine Art von /proc/ als Windows Äquivalent?
-
30.07.10 00:26 #4
- Registriert seit
- May 2008
- Ort
- Baunatal (Hessen)
- Beiträge
- 385
Ich hätte noch den Vorschlag einfach alle Prozesse durchzugehen und zu schauen ob der richtige dabei ist. Dafür brauchst du nur die user32.dll und die tlhelp32.h.
Alles Prozesse auflisten
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
typedef std::list<PItem*> PItemList; PItemList getProcessList() { PItemList ProcessList; char buffer[260]; HANDLE hSnapShot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0); PROCESSENTRY32* processInfo = new PROCESSENTRY32; processInfo->dwSize = sizeof ( PROCESSENTRY32); while( Process32Next(hSnapShot,processInfo) != FALSE ) { wcstombs(buffer, processInfo->szExeFile, sizeof(buffer)); ProcessList.push_back (new PItem(buffer, processInfo->th32ProcessID)); }; CloseHandle ( hSnapShot); delete processInfo; return ProcessList; }
Ist nur als Bsp gedacht hat ich gerade so rumfliegen den Code und nicht wunder wegen PItem
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
class PItem { private: String ProcessName; int ID; public: PItem(); PItem(String processname, int id); ~PItem(); String getProcessName(); void setProcessName(String processname); int getID(); void setID(int id); };
MFG kb gerade Code zu ändern
. Den Rest bekommst du ja alleine hin. Das mit dem PItem war nur zur Vervollständigung, das sit ja für dich ncith nötig.
EDIT: oh gerade dein Code angeschaut, du gehst ja auch alles durch XD, nur anders
-.-
Ach und falls du einen Prozess mit Fenster übeprüfen wilslt kannst du ja auch noch FindWindow()(http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx) probieren.Geändert von 3Cyb3r (30.07.10 um 00:38 Uhr)
Bei der Geburt ist ein Mensch so unfertig, wie ein an einem schönen blauen Montag in Taiwan hergestellter Computer vor der Programmierung.
- Wolfgang Körner
-
30.07.10 05:37 #5
- Registriert seit
- Jul 2003
- Ort
- Nottuln (NRW)
- Beiträge
- 627
Vielen Dank für die Antwort, ich bin erstmal 2 Tage in England, danach schaue ich mir alles an
Ähnliche Themen
-
Admin Rechte phpBB 2.0.5?
Von DragonTears im Forum Coders TalkAntworten: 0Letzter Beitrag: 08.04.09, 10:34 -
CorelDraw 10 - Fehler beim Start ohne Admin-Rechte
Von komatphil im Forum Sonstige Grafik-ProgrammeAntworten: 3Letzter Beitrag: 13.01.09, 15:34 -
Admin Rechte auslesen.
Von ShishaLiVe im Forum PHPAntworten: 7Letzter Beitrag: 27.03.08, 01:33 -
Access ActiveX Elemente hinzufügen ohne Admin-Rechte
Von therealcharlie im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 15.12.05, 10:09 -
Win XP-Internetzugriff ohne Admin-Rechte?
Von Glavis im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 26.11.01, 18:35



Zitieren
Login





Lesezeichen