Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 检测应用程序是否在远程应用程序中运行_C# 4.0_Rdp - Fatal编程技术网

C# 4.0 检测应用程序是否在远程应用程序中运行

C# 4.0 检测应用程序是否在远程应用程序中运行,c#-4.0,rdp,C# 4.0,Rdp,有没有办法从c语言编写的应用程序中检测它是否正在使用RDP作为远程应用程序启动?获取应用程序进程的父进程,并检查它是否由rdpinit.exe引发。如果是这样,那就是一个RemoteApp 获取父进程id的快速示例(抱歉,vb.net): 公共函数GetParentProcessId(进程为进程)为整数 若流程为Nothing,则抛出新的NullReferenceException() Dim parentProcessId为整数 Dim快照为IntPtr=IntPtr.Zero 尝试 sna

有没有办法从c语言编写的应用程序中检测它是否正在使用RDP作为远程应用程序启动?

获取应用程序进程的父进程,并检查它是否由rdpinit.exe引发。如果是这样,那就是一个RemoteApp

获取父进程id的快速示例(抱歉,vb.net):


公共函数GetParentProcessId(进程为进程)为整数
若流程为Nothing,则抛出新的NullReferenceException()
Dim parentProcessId为整数
Dim快照为IntPtr=IntPtr.Zero
尝试
snapShot=CreateToolhelp32Snapshot(SnapshotFlags.Process,0)
如果快照IntPtr.Zero,则
Dim procEntry作为新进程32
procEntry.dwSize=CUInt(Marshal.SizeOf(GetType(PROCESSENTRY32)))
如果先处理32(快照、procEntry),则
做
如果process.Id=procEntry.th32ProcessID,则
parentProcessId=CInt(procEntry.th32ParentProcessID)
退出Do
如果结束
在Process32Next时循环(快照、procEntry)
如果结束
如果结束
特例
扔
最后
如果快照IntPtr.Zero,则
CloseHandle(快照)
如果结束
结束尝试
返回parentProcessId
端函数
现在,您可以轻松获得父进程

问候,,
Jan

获取应用程序进程的父进程,并检查它是否由rdpinit.exe引发。如果是这样,那就是一个RemoteApp

获取父进程id的快速示例(抱歉,vb.net):


公共函数GetParentProcessId(进程为进程)为整数
若流程为Nothing,则抛出新的NullReferenceException()
Dim parentProcessId为整数
Dim快照为IntPtr=IntPtr.Zero
尝试
snapShot=CreateToolhelp32Snapshot(SnapshotFlags.Process,0)
如果快照IntPtr.Zero,则
Dim procEntry作为新进程32
procEntry.dwSize=CUInt(Marshal.SizeOf(GetType(PROCESSENTRY32)))
如果先处理32(快照、procEntry),则
做
如果process.Id=procEntry.th32ProcessID,则
parentProcessId=CInt(procEntry.th32ParentProcessID)
退出Do
如果结束
在Process32Next时循环(快照、procEntry)
如果结束
如果结束
特例
扔
最后
如果快照IntPtr.Zero,则
CloseHandle(快照)
如果结束
结束尝试
返回parentProcessId
端函数
现在,您可以轻松获得父进程

问候,, 一月

<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