狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】如何判斷當前是否開啟了遠程桌面連接

admin
2021年3月15日 23:49 本文熱度 4736
在C#中用netstat -an | find "3389"查一下有沒有連接是處于ESTABLISHED狀態(tài),本機發(fā)送的則遠程端口是3389,如果有遠程桌面過來則本機端口為3389。

Detecting remote desktop connection

無論如何,在程序中是否可以檢測程序是從遠程桌面會話內(nèi)部運行還是在.NET 2.0中正常運行? 我想做的是,我創(chuàng)建了一個timeclock應用程序,該應用程序將一個人打入和打入并進行跟蹤。 但是我懷疑這個特定的人正在在家中遠程進入他們的計算機,并進出辦公室。

有什么想法可以解決此問題(并且不能選擇取消遠程桌面訪問)嗎? 我的想法是,如果有一種方法可以檢測到遠程桌面會話,那么我將簡單地將其實現(xiàn)到程序中并防止它們遠程進行計時。


據(jù)稱,

1
System.Windows.Forms.SystemInformation.TerminalServerSession

對于遠程桌面會話(或VNC會話)為true

但我會測試以確保;-)


如果您不想為此添加對System.Windows.Forms.dll的引用(如上所述),則還可以直接通過PInvoke調用基礎系統(tǒng)調用,如下所示:

1
2
    int result = GetSystemMetrics(SystemMetric.SM_REMOTESESSION);
    bool isRemoteSession = (result != 0);

可以在PInvoke.net-SystemMetric中找到SystemMetric枚舉(但您可以只使用0x1000的值);在PInvoke.net上獲取GetSystemMetrics的簽名-GetSystemMetrics。

我用RDP和VNC進行了測試-與前者一起使用(也具有admin / console模式),而沒有檢測到后者。


對于Windows應用商店應用程序,您可以使用以下命令:

1
Windows.System.RemoteDesktop.InteractiveSession.IsRemote

http://www.appdeploy.com/messageboards/tm.asp?m=21420&mpage=1&key=厬

系統(tǒng)變量%sessionname%如果是本地則返回Console,如果是遠程則返回RDP *。

1
2
isRDP = [System.Environment]
    .GetEnvironmentVariable("SESSIONNAME").StartsWith("RDP-")

好吧,幾天前我也遇到過類似的問題。我解決該問題的方法是利用某些遠程桌面應用程序使用已知的默認端口(至少是VNC和/或Microsoft遠程桌面連接)這一事實。因此,我創(chuàng)建了一個方法來告知端口是否正在使用,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* Libraries needed */
using System.Linq;
using System.Net.NetworkInformation;

/*....
  ....
  ....*/


private static bool IsPortBeingUsed(int port)
{
    return IPGlobalProperties.GetIPGlobalProperties().
                GetActiveTcpConnections().
                    Any(
                            tcpConnectionInformation =>
                            tcpConnectionInformation.LocalEndPoint.Port == port
                       );
}

請記住,將帶庫的using語句放在方法所在文件的開頭。

例如,您只需要傳遞一個參數(shù),例如3389端口(這是遠程桌面連接的默認端口)或5900端口(這是VNC連接的默認端口)。

該方法是使用C#4.0功能創(chuàng)建的,但是可以使用舊版本的C#.Net或Visual Basic完美地實現(xiàn)。

這對我有用,因為我只需要檢查前面提到的兩個應用程序。

希望對您有所幫助。


所有遠程登錄程序都需要在本地計算機上運行的服務或程序。如果允許這些服務或程序在其本地計算機上運行,??則發(fā)問者僅需擔心VNC及其克隆。它們對于使用遠程桌面不是必需的,并且所有操作系統(tǒng)都有遠程桌面客戶端。如果遠程桌面正在運行,則不需要VNC服務器。

此外,除非您以管理員身份在服務器計算機上安裝VNC克隆,否則無法為您登錄。只要您不讓用戶像其他用戶一樣運行流程,唯一要擔心的是您的其他員工之一是否以有問題的員工身份登錄。如果真是這樣,沒有任何技術解決方案將是不夠的。即使您必須為每個員工使用單獨的卡登錄,有問題的員工也可以給他的朋友卡。


對于WPF應用程序,有
System.Windows.SystemParameters.IsRemoteSessionSystem.Windows.SystemParameters.IsRemotelyControlled


如果您擔心VNC,則可以使用netstat檢查打開的TCP連接。在命令提示符下,鍵入:

1
netstat ---p tcp

并檢查端口5900是否為" ESTABLISHED"。當然,5900是默認的連接端口,因此它取決于所設置的端口。

從那里,我在CodeGuru上找到了這篇文章,解釋了如何在c#程序中使用netstat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
string sCommand ="netstat";
string sArgs ="";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo (sCommand, sArgs);

psi.UseShellExecute = false;
psi.RedirectStandartOutput = true;

System.Diagnostics.Process proc = null;
proc = System.Diagnostics.Process.Start(psi);
proc.WaitForExit();

// Read the first 4 lines. They don't contain any information we need to get
for (int i = 0; i < 4; i++)
    proc.StandardOutput.ReadLine();

while (true)
{
    string strLine = proc.StandardOutput.ReadLine();
    if (strLine == null)
        break;

    // Analyze the line
    // Line is in following structure:
    // Protocol (TCP/UDP)   Local Address(host:port) Foreign Address(host:port) State(ESTABLISHED, ...)
}

僅需說明一下,如果會話使用的是GPU的RemoteFX虛擬化,則單獨使用GetSystemMetrics(SystemMetric.SM_REMOTESESSION)對于Windows 8 / Server 2012及更高版本已不再可靠。

Microsoft在此處描述了檢測RDS的"官方"方法:檢測遠程桌面服務環(huán)境(最新更新時間為18 May,18)。

它包括使用SystemMetrics調用和位于以下位置的注冊表檢查

1
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\GlassSessionId

那篇文章中的代碼示例僅是C ++,但是鑒于它只是注冊表查找,我認為人們不會覺得很難用其他語言進行復制。

我希望至少至少有一些.net內(nèi)置函數(shù)在upthread中提到,可以完全遵循此要求,但是:

  • SystemParameters.IsRemoteSession在此處稱為"到SM_REMOTESESSION的映射。請參閱GetSystemMetrics",以及

  • SystemParameters.IsRemotelyControlled在此處被記為相同,

所以我不樂觀

我將盡快進行一些詳細的檢查并發(fā)布結果。


該文章在 2021/3/16 0:15:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved