Как убедиться, что когда пользователь A пытается открыть файл .doc(x), он откроется в средстве просмотра Word, а когда пользователь B сделает то же самое, он откроется в Word 2013. Программное обеспечение уже установлено в системе, мне просто интересно, как отличить 2. Оба пользователя работают удаленно на RDS.
1 ответ
1
Способ 1, WSH vbscript, WMI-запрос:
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
Выход:
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"
Получить командную строку SessionId:
query user
Выход:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>administrator console 0 Active . 13.08.2013 18:52
Способ 2, список задач, командная строка:
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:"
Способ 3, графический интерфейс диспетчера задач:
Способ 4, командная строка, powershell:
powershell ps^|?{$_.Name -eq'WINWORD' -or $_.Name -eq'WORDVIEW'}^|FT MainWindowTitle,Path,Id,Name,SessionId -Au;query user
Способ 5, сценарий powershell:
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