
Wie stelle ich sicher, dass eine .doc(x)-Datei, wenn Benutzer A versucht, sie zu öffnen, in Word Viewer geöffnet wird, und dass sie, wenn Benutzer B dasselbe tut, in Word 2013 geöffnet wird? Die Software ist bereits auf dem System installiert, ich frage mich nur, wie ich zwischen den beiden unterscheiden kann. Beide Benutzer arbeiten remote auf RDS.
Antwort1
Weg 1, WSH vbscript, WMI-Abfrage:
GetProcessInfo.vbs:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE (Name = ""winword.exe"" OR Name = ""WORDVIEW.EXE"") ")
Dim strInfo
Wscript.Echo "Caption ProcessId ParentProcessId SessionId ThreadCount UserName CommandLine"
For Each objProcess in colProcessList
strInfo = objProcess.Caption
strInfo = strInfo & " " & objProcess.ProcessId
strInfo = strInfo & " " & objProcess.ParentProcessId
strInfo = strInfo & " " & objProcess.SessionId
strInfo = strInfo & " " & objProcess.ThreadCount
objProcess.GetOwner strNameOfUser, strUserDomain
strInfo = strInfo & " " & strUserDomain & "\" & strNameOfUser
strInfo = strInfo & " " & objProcess.CommandLine
Wscript.Echo strInfo
Next
Ausgabe:
Caption ProcessId ParentProcessId SessionId ThreadCount UserName CommandLine
WINWORD.EXE 10032 10480 0 7 HT\Administrator "C:\App32\Microsoft Office\Office12\WINWORD.EXE"
WORDVIEW.EXE 17120 17800 0 4 HT\Administrator "C:\App32\Microsoft Office\OFFICE11\WORDVIEW.EXE"
Befehlszeile zum Abrufen der SessionId:
query user
Ausgabe:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>administrator console 0 Active . 13.08.2013 18:52
Weg 2, Aufgabenliste, Befehlszeile:
tasklist /FI "IMAGENAME eq WINWORD.EXE" /V /FO CSV | find /V /I "INFO:"
tasklist /FI "IMAGENAME eq WORDVIEW.EXE" /V /FO CSV | find /V /I "INFO:"
Weg 3, Task-Manager-GUI:
Weg 4, Befehlszeile, Powershell:
powershell ps^|?{$_.Name -eq'WINWORD' -or $_.Name -eq'WORDVIEW'}^|FT MainWindowTitle,Path,Id,Name,SessionId -Au;query user
Weg 5, Powershell-Skript:
GetProcessInfo.ps1:
$own=@{};gwmi win32_process|%{$own[$_.handle]=$_.getowner().user}
ps|?{$_.Name -eq 'WINWORD' -or $_.Name -eq 'WORDVIEW'}|FT MainWindowTitle,Path,SessionId,Name,Id,@{n="Owner";e={$own[$_.Id.ToString()]}} -Au