1

RDPを使用してリモートアプリとして起動されているかどうかをc#で記述されたアプリケーションから検出する方法はありますか?

4

1 に答える 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 に答える