リモート デスクトップ サービス: ユーザーごとに Word Viewer と Full Word を区別する

リモート デスクトップ サービス: ユーザーごとに Word Viewer と Full Word を区別する

ユーザー A が .doc(x) ファイルを開こうとすると Word Viewer で開き、ユーザー B が同じことをすると Word 2013 で開くようにするにはどうすればよいでしょうか。ソフトウェアは既にシステムにインストールされていますが、この 2 つを区別する方法を知りたいだけです。両方のユーザーは RDS でリモートで作業しています。

答え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、タスク マネージャー GUI:

タスク マネージャーのユーザー名、PID、セッション ID

方法 4、コマンドライン、PowerShell:

powershell ps^|?{$_.Name -eq'WINWORD' -or $_.Name -eq'WORDVIEW'}^|FT MainWindowTitle,Path,Id,Name,SessionId -Au;query user

方法 5、PowerShell スクリプト:

プロセス情報を取得する.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

関連情報