2012-10-24 54 views
1

我正在開發一個c#.Net3.5應用程序。如何識別隔離網絡

應用程序使用WinVerifyTrust檢查文件的簽名。問題是,在隔離網絡上(即沒有互聯網訪問但機器仍然有IP地址),WinVerifyTrust返回之前需要很長時間(約20秒)。

有沒有辦法找出這種情況?

回答

1

如果計算機連接的網絡速度較慢,您將如何區分?

無論如何,你可以Ping谷歌(例如),看看它是否可用。如果電腦沒有被隔離,它將可用。

從C#ping通只是用System.Net.NetworkInformation.Ping

編輯:如果你需要支持是後面的代理,那麼你應該打開一個TcpConnection在谷歌80端口和檢查,如果你能或者你不能。如果你無法打開一個端口到谷歌的80,你也無法連接到WinVerifyTrust。

+0

你是正確的,但在速度較慢的網絡連接它是確定我的應用程序會慢慢工作,但是當使用隔離的網絡不是這樣的。 – user844541

+0

無論我是否連接到互聯網,在嘗試ping Google時都會收到請求超時。 – user844541

+0

你可以發佈你的代碼嗎?過去我已經做了好幾次,並且它很有效。你可以檢查你是否可以從命令行ping Google? –

2

您是否嘗試過使用Windows API -

using System; 
using System.Runtime; 
using System.Runtime.InteropServices; 

    public class InternetCS 
    { 
     //Creating the extern function... 
     [DllImport("wininet.dll")] 
     private extern static bool InternetGetConnectedState(out int Description, int ReservedValue); 

     //Creating a function that uses the API function... 
     public static bool IsConnectedToInternet() 
     { 
      int Desc ; 
      return InternetGetConnectedState(out Desc, 0) ; 
     } 
    } 
+1

我試過了,但它在孤立網絡上返回true。 – user844541