In c# könntest du den Prozess einfach per Namen suchen, instanziieren und process.Kill(); ausführen.
Weiß nicht, wie das in cpp aussieht, da ich von CPP keine Ahnung hab... aber dafür kannst du ja auf eine API Funktion zugreifen.
Erkundige dich ma über die Funktion TerminateProcess der kernel32.dll
denke google wird da behilflich sein.
:edit:
Google hat mir auch gerade das noch ausgespuckt
Code:
/****************************************************************************
Bestimmt das zum übergebenen Prozess-Exectuable gehörende Prozess-Handle
und gibt es zurück.
Übergabe
strProcessExe Prozess-Executable.
dwDesiredAccess Benötigter Prozess-Zugriff.
Rückgabe
Zugehöriges Handle oder NULL im Fehlerfall.
*****************************************************************************/
HANDLE GetProcessHandle( CString strProcessExe, DWORD dwDesiredAccess )
{
HANDLE hSnapShot; // System-Snap-Shot-Handle
PROCESSENTRY32 PEntry; // Process-Enumerations-Struktur
HANDLE hProcess; // Prozess-Handle
CString strExeFile; // Hilfssstring
BOOL bOK; // Abbruch-Flag
// Liste aller im System laufenden Prozesse erstellen
hSnapShot=::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( hSnapShot==INVALID_HANDLE_VALUE )
// Fehler aufgetreten
return NULL;
// Prozess-Executable in Kleinbuchstaben wandeln
strProcessExe.MakeLower( );
// Prozess-Liste durchlaufen
PEntry.dwSize=sizeof( PEntry );
bOK=::Process32First( hSnapShot, &PEntry );
for( ; bOK; bOK=::Process32Next( hSnapShot, &PEntry )){
// Pozess-ID in Handle umwandeln
hProcess=::OpenProcess( dwDesiredAccess, FALSE, PEntry.th32ProcessID );
if( hProcess==NULL )
// Umwandlung misslungen
continue;
// Prozess-Executable in Kleinbuchstaben wandeln und prüfen
strExeFile=PEntry.szExeFile;
strExeFile.MakeLower( );
if( strExeFile.Find( strProcessExe )!=-1 )
// Passenden Prozess gefunden, Handle zurückgeben
return hProcess;
}
// Nichts Passendes gefunden
return NULL;
}
Damit kannst Du mit
Code:
TerminateProcess( GetProcessHandle( "test.exe", PROCESS_TERMINATE ), 0 );
einen laufenden Prozess "test.exe" beenden. Das gelingt aber nur, wenn der ausführende Benutzer auch die entsprechenden Rechte besitzt. GetProcessHandle( ... ) kehrt bei fehlenden Rechten der einem anderen Fehler mit NULL zurück. Des Weiteren musst Du darauf achten, bei der Executable keinen Pfad anzugeben.