bigsero
Goto Top

Prozess Owner

Hallo Zusammen, ich brauche wiedermal Hilfe

Auf einem Citrix Server möchte ich unter dem "user" abfragen ob bereits ein Prozess z.B. Excel.exe läuft.

Das Sript sagt es läuft bereits ein Excel.exe ----- ABER es mekrt nicht das dieser Prozess nicht dem user gehört.. Terminal Server eben

$ProcessName = "Excel.exe"  

If ProcessExists($ProcessName) Then
	MsgBox(0,"Running",$ProcessName & " is running.")  
Else
	MsgBox(0,"Not Running",$ProcessName & " is not running.")  
EndIf

Bei diesem Script hat der User keine Berechtigung die WMI abfrage zu machen
Dim $s_ProcessOwner
Dim $o_WMIServiceCIMv2 = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
$o_ColListOfProcesses = $o_WMIServiceCIMv2.ExecQuery ("SELECT * FROM Win32_Process WHERE Name=""excel.exe""")  
If $o_ColListOfProcesses.Count > 0 Then
	For $o_ObjProcess in $o_ColListOfProcesses
		$i_RC = $o_ObjProcess.GetOwner($s_ProcessOwner)
		If $i_RC Then
			MsgBox(0, "", "Error " & $i_RC & " reading Process Owner")  
			Exit(1)
		ElseIf $s_ProcessOwner = @UserName Then
			MsgBox(0, "", "Found!")  
			Exit(0)
		EndIF
	Next
EndIf
MsgBox(0, "", "Not found!")  


Hat jemand eine Idee?

[Edit Biber] Codetags [/Edit]

Content-Key: 138519

Url: https://administrator.de/contentid/138519

Printed on: April 24, 2024 at 11:04 o'clock

Member: DerWoWusste
DerWoWusste Mar 21, 2010 at 18:44:54 (UTC)
Goto Top
Hi.
Darf ich vorab fragen, was Du bezweckst? Soll der Benutzer per Skript sehen, ob er bereits Excel offen hat?
Member: bigsero
bigsero Jun 03, 2010 at 13:10:35 (UTC)
Goto Top
Habe die Lösung gefunden


; ProcessExist.exe
; ----------------


If $CmdLine <> 2 Then
MsgBox(16, "", "Fehler: Ungueltige Anzahl Parameter: " & $CmdLine, 5)
Exit(1)
EndIf
Dim $s_ProcessOwner
Dim $o_WMIServiceCIMv2 = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
If IsObj($o_WMIServiceCIMv2) Then
$o_ColListOfProcesses = $o_WMIServiceCIMv2.ExecQuery ("SELECT * FROM Win32_Process WHERE Name=""" & $CmdLine[1] & """")
If $o_ColListOfProcesses.Count > 0 Then
For $o_ObjProcess in $o_ColListOfProcesses
$i_RC = $o_ObjProcess.GetOwner($s_ProcessOwner)
If $i_RC Then
MsgBox(48, "", "Warnung: Fehler" & $i_RC & " beim lesen des Process Owner von Prozess """ & $CmdLine[1] & """", 5)
Exit(0)
ElseIf $s_ProcessOwner = $CmdLine[2] Then
MsgBox(16, "HelpDesk", "Beim Start von Lotus Notes ist ein Fehler aufgetreten. Wenden Sie sich bitte an den Helpdesk.", 5)
Exit(1)
EndIF
Next
Else
Exit(0)
EndIf
Else
MsgBox(48, "", "Warnung: Notwendige WMI-Objektvariable konnte nicht erstellt werden.", 5)
Exit(0)
EndIf


Der Eigentliche Aufruf:

$i_RC = FileInstall("ProcessExist.exe", "ProcessExist.exe", 1)
If not $i_RC Then
MsgBox(16, "", "Fehler: Helper-Datei ""ProcessExist.exe"" konnte nicht installiert werden.", 5)
Exit(1)
EndIf
$i_RC = RunAsWait("adm", "AD", "xxxxx", 0, "ProcessExist.exe nlnotes.exe " & @username, ".", @sw_hide, 8)
If $i_RC Then Exit(1)