Remotedesktopdienste: Unterscheidung zwischen Word Viewer und Full Word pro Benutzer

Remotedesktopdienste: Unterscheidung zwischen Word Viewer und Full Word pro Benutzer

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:

Task-Manager-Benutzername, PID, Sitzungs-ID

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

verwandte Informationen