Как определить изолированную сеть

Я занимаюсь разработкой приложения 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.

Другие вопросы по тегам