Privileges and killing a process
- From: "pithhelmet" <pithhelmet@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 2 Jun 2005 06:54:01 -0700
Hi Everyone -
This is kinda a crazy one, so i thought i would post it up...
I have an application that is spawned if there is a fatal error in the
primary application.
This spawned program simply goes out and looks for orphaned applications
that are spawned from the main application (activex .exes) and if there are
any, then the application will kill them (by terminating the process by PID).
I have used the code snippet that is floating around the web (kill process)
that changes the privileges at run time....
Trouble is, running in the IDE - the application runs perfect -
running outside the IDE, the program doesn't kill the applications
(notepad.exe) is the example that i'm using.
In win2k, it just jumps right over notepad.exe,
in win2k3, it also jumps over notepad.exe - but it also blows out the themes
and won't allow the logged on user to log off or shutdown the computer.
I've commented out the code section about changing the privileges - and it
stopped the killing of the themes, and will allow the user to log off and
restart the computer, but it will not kill the process (notepad).
I have confirmed the PID of notepad and taskmanager, spy++ and the
application tries to kill the right PID, so thats not the issue (wrong PID)
but the process won't die.
<code>
Function KillProcess(ByVal hProcessID As Long, Optional ByVal ExitCode As
Long) As Boolean
Dim hToken As Long
Dim hProcess As Long
Dim tp As TOKEN_PRIVILEGES
If getVersion() >= 0 Then
If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY, hToken) = 0 Then
GoTo CleanUp
End If
' If LookupPrivilegeValue("", "SeDebugPrivilege", tp.LuidUDT) = 0 Then
If LookupPrivilegeValue(vbNullString, "SeImpersonatePrivilege", tp.LuidUDT)
= 0 Then
GoTo CleanUp
End If
tp.PrivilegeCount = 1
tp.Attributes = SE_PRIVILEGE_ENABLED
If AdjustTokenPrivileges(hToken, False, tp, 0, ByVal 0&, ByVal 0&) = 0 Then
GoTo CleanUp
End If
End If
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, hProcessID)
If hProcess Then
KillProcess = (TerminateProcess(hProcess, ExitCode) <> 0)
' close the process handle
CloseHandle hProcess
End If
If getVersion() >= 0 Then
' under NT restore original privileges
tp.Attributes = 0
AdjustTokenPrivileges hToken, False, tp, 0, ByVal 0&, ByVal 0&
CleanUp:
If hToken Then CloseHandle hToken
End If
End Function
</code>
thanks
tony
.
- Follow-Ups:
- Re: Privileges and killing a process
- From: Lee Peedin
- Re: Privileges and killing a process
- Prev by Date: Re: Code to INVERT image in VB6
- Next by Date: Re: Setting Label zorder above picture control
- Previous by thread: VB in a website
- Next by thread: Re: Privileges and killing a process
- Index(es):
Relevant Pages
|
Loading