2012-10-24 4 views
1

Je développe une application C# .Net3.5.Comment identifier un réseau isolé

Les applications vérifient la signature des fichiers en utilisant WinVerifyTrust. Le problème est que sur des réseaux isolés (c'est-à-dire sans accès à Internet mais la machine a encore une adresse IP), cela prend beaucoup de temps (~ 20 secondes) jusqu'à ce que WinVerifyTrust revienne.

Existe-t-il un moyen d'identifier cette situation?

Répondre

1

Et comment vous différencier si l'ordinateur est connecté avec une connexion Internet lente?

De toute façon, vous pouvez Ping google (par exemple) pour voir si elle est disponible. Si l'ordinateur n'est pas isolé, il sera disponible.

Pour effectuer un ping de C# il suffit d'utiliser System.Net.NetworkInformation.Ping

EDIT: si vous avez besoin de support étant derrière un proxy, alors vous devriez ouvrir un TcpConnection sur le port google 80 et vérifiez si vous pouvez ou tu ne peux pas. Si vous ne pouvez pas ouvrir un port sur google's 80, vous ne pouvez pas non plus vous connecter à WinVerifyTrust.

+0

vous avez raison, mais sur une des connexions réseau lentes, il est ok que mon application fonctionnera lentement, mais lors de l'utilisation des réseaux isolés, il n'est pas. – user844541

+0

Je reçois un délai d'attente de requête lorsque j'essaie d'envoyer une requête ping à Google, peu importe si je suis connecté à Internet ou non. – user844541

+0

Pouvez-vous poster votre code? Je l'ai fait plusieurs fois dans le passé et ça fonctionne. Pouvez-vous vérifier si vous pouvez envoyer une requête ping à google depuis la ligne de commande? –

2

Avez-vous essayé d'utiliser la 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

J'ai essayé cela mais il renvoie vrai sur les réseaux isolés. – user844541