0
プロダクション環境では、リモートアシスタンスがPCで開始されたときにウィンドウを開きたいので、PCに接続する人にはさらにオプションがあります。しかし、これが可能なら何も見つけることができないのですか?もしそうなら、それをどのように検出するか?C#リモートアシスタンス接続の検出
プロダクション環境では、リモートアシスタンスがPCで開始されたときにウィンドウを開きたいので、PCに接続する人にはさらにオプションがあります。しかし、これが可能なら何も見つけることができないのですか?もしそうなら、それをどのように検出するか?C#リモートアシスタンス接続の検出
これはできますが、それは難しいと感じています。これは一般的に避けています。詳細については、How to detect RDC from C#.netを参照してください。
RDPを開始するには、ポート3389でリッスンする必要があります。このようにすればうまくいくはずです。
int port = 3389;
using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp", false))
{
if (key != null)
{
object value = key.GetValue("PortNumber");
if (value != null) port = Convert.ToInt32(value);
}
}
しかし、ポート番号を設定すると、これが最適な方法ではありません。 次にPinvokeとCassiaがあります。
public bool IsComputerUsedByTS()
{
var tsMgr = new TerminalServicesManager();
var localSvr = tsMgr.GetLocalServer();
var sessions = localSvr.GetSessions();
foreach(var session in sessions)
{
if(session.ConnectionState == ConnectionState.Active ||
session.ConnectionState == ConnectionState.Connected) //Add more states you want to check for as needed
{
return true;
}
}
return false;
}
そして最後にではなく、少なくとも:
System.Windows.Forms.SystemInformation.TerminalServerSession
これはフォームがインポート使用していますが、非常にシンプルなソリューションですカシアで、あなたのような何かを行うことができます。リモートデスクトップ環境でプログラムを実行すると、true
が返されます。
こんにちは@SilentStorm私はそれを試してみましたが、私はRDC接続が開いているときに新しいセッションを取得しません。 – mortenstarck
また、これを試すこともできます: 'System.Windows.Forms.SystemInformation.TerminalServerSession' rdp接続用のboolを返しますが、フォームインポートを使用します。 – SilentStorm
そして、どのような方法を使いましたか?最初か後者? – SilentStorm