○RemoteApp の動作について
・「RDPShell」が起動している
'''''' RemoteAppで起動しているか判定 ''' ''' ''' Public Function IsRemoteApp() As Boolean Try Using mos As New System.Management.ManagementObjectSearcher( _ String.Format( _ "SELECT * FROM Win32_Process WHERE Name LIKE 'RDPSHELL.EXE'")) Using moc As System.Management.ManagementObjectCollection = mos.[Get]() For Each mo As System.Management.ManagementObject In moc Using mo 'プロセスIDを取得する Dim processId As Integer = Convert.ToInt32(mo("ProcessId")) Dim name As String = mo("Name").ToString() Try Dim methodName(1) As String mo.InvokeMethod("GetOwner", methodName) Dim user As String = methodName(0) Dim domain As String = methodName(1) If user = Nothing Then user = "" If user.ToUpper() = System.Environment.UserName.ToUpper() Then Return True End If Catch ex As Exception End Try End Using Next End Using End Using Catch ex As Exception End Try Return False End Function
'''''' RemoteAppで起動しているか判定 ''' ''' ''' Public Function IsRemoteApp() As Boolean Try Dim mc As New System.Management.ManagementClass("Win32_Process") Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances() Dim mo As System.Management.ManagementObject For Each mo In moc Dim id As String = mo("ProcessId").ToString() Dim name As String = mo("Name").ToString() Try If name.ToUpper() = "RDPSHELL.EXE" Then Dim methodName(1) As String mo.InvokeMethod("GetOwner", methodName) Dim user As String = methodName(0) Dim domain As String = methodName(1) If user = Nothing Then user = "" If user.ToUpper() = System.Environment.UserName.ToUpper() Then Return True End If End If Catch ex As Exception End Try Next mo Catch ex As Exception End Try Return False End Function