RDPを使用してリモートアプリとして起動されているかどうかをc#で記述されたアプリケーションから検出する方法はありますか?
質問する
1025 次
1 に答える
1
アプリケーションのプロセスの親を取得し、それが rdpinit.exe によって発生したかどうかを確認します。もしそうなら、それは RemoteApp です。
親プロセス ID を取得するための簡単な例 (申し訳ありませんが、vb.net):
<Extension()>
Public Function GetParentProcessId(process As Process) As Integer
If process Is Nothing Then Throw New NullReferenceException()
Dim parentProcessId As Integer
Dim snapShot As IntPtr = IntPtr.Zero
Try
snapShot = CreateToolhelp32Snapshot(SnapshotFlags.Process, 0)
If snapShot <> IntPtr.Zero Then
Dim procEntry As New PROCESSENTRY32
procEntry.dwSize = CUInt(Marshal.SizeOf(GetType(PROCESSENTRY32)))
If Process32First(snapShot, procEntry) Then
Do
If process.Id = procEntry.th32ProcessID Then
parentProcessId = CInt(procEntry.th32ParentProcessID)
Exit Do
End If
Loop While Process32Next(snapShot, procEntry)
End If
End If
Catch ex As Exception
Throw
Finally
If snapShot <> IntPtr.Zero Then
CloseHandle(snapShot)
End If
End Try
Return parentProcessId
End Function
これで、親プロセスを簡単に取得できます。
よろしく、 ヤン
于 2013-08-14T05:40:30.230 に答える