C# 4.0 检测应用程序是否在远程应用程序中运行
有没有办法从c语言编写的应用程序中检测它是否正在使用RDP作为远程应用程序启动?获取应用程序进程的父进程,并检查它是否由rdpinit.exe引发。如果是这样,那就是一个RemoteApp 获取父进程id的快速示例(抱歉,vb.net):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
公共函数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