Как определить изолированную сеть
Я занимаюсь разработкой приложения aC# .Net3.5.
Приложения проверяют подпись файлов с помощью WinVerifyTrust. Проблема заключается в том, что в изолированных сетях (то есть без доступа к Интернету, но у машины все еще есть IP-адрес) требуется очень много времени (~20 секунд), пока WinVerifyTrust не вернется.
Есть ли способ определить эту ситуацию?
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 ) ;
}
}
И как вы будете отличаться, если компьютер подключен с медленным интернет-соединением?
В любом случае вы можете пинг Google (например), чтобы увидеть, если он доступен. Если компьютер не изолирован, он будет доступен.
Чтобы пинговать из C# просто используйте System.Net.NetworkInformation.Ping
РЕДАКТИРОВАТЬ: если вам нужно поддерживать нахождение за прокси-сервером, откройте TcpConnection через порт Google 80 и проверьте, можете ли вы или не можете. Если вы не можете открыть порт для Google 80, вы также не можете подключиться к WinVerifyTrust.