Ping Abfrage via C Sharp
Hallo Leute,
ich wollte eine Pingabfage mit C# programmieren und habe das hier mal im Inet gefunden, doch wenn ich es ausführe, kommt ein Fehler und der verweist mich auf
die System.DirectoryServices. ("Fehler 1 Der Typ- oder Namespacename "DirectoryServices" ist im Namespace "System" nicht vorhanden. (Fehlt ein Assemblyverweis?) C:\Users\xxx\AppData\Local\Temporary Projects\Pinger\Program.cs 3 14 Pinger")
Wie füge ich sowas der Assembly hinzu oder was muss ich machen??
Vielen Dank im Voraus!
PS: Ich habe es mit einer WindowsConsolenAnwendung versucht!
//
ich wollte eine Pingabfage mit C# programmieren und habe das hier mal im Inet gefunden, doch wenn ich es ausführe, kommt ein Fehler und der verweist mich auf
die System.DirectoryServices. ("Fehler 1 Der Typ- oder Namespacename "DirectoryServices" ist im Namespace "System" nicht vorhanden. (Fehlt ein Assemblyverweis?) C:\Users\xxx\AppData\Local\Temporary Projects\Pinger\Program.cs 3 14 Pinger")
Wie füge ich sowas der Assembly hinzu oder was muss ich machen??
Vielen Dank im Voraus!
PS: Ich habe es mit einer WindowsConsolenAnwendung versucht!
using System;
using System.Net.NetworkInformation;
using System.DirectoryServices;
namespace Pinger
{
class Program
{
static void Ping(string host)
{
using (Ping p = new Ping())
{
try
{
//Eventhandler anmelden welcher ausgeführt werden soll, wenn ein Ping durch ist.
p.PingCompleted += new PingCompletedEventHandler(p_PingCompleted);
byte buffer = new byte[32];
int timeOut = 1000;
PingOptions op = new PingOptions();
//host als userStat Object übergeben
// |
// \/
p.SendAsync(host, timeOut, buffer, op, host);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
static void Main(string args)
{
string domain = "eureDomain";
System.DirectoryServices.DirectoryEntry root = new System.DirectoryServices.DirectoryEntry(string.Concat("LDAP://",domain));
DirectorySearcher searcher = new DirectorySearcher(root);
//filter zur suche angeben, in diesem Fall, alle Pc´s
searcher.Filter = "(objectCategory=computer)";
foreach (SearchResult res in searcher.FindAll())
{
//ausgabe ist normaler Weiße:
//''CN=computername''
//Wir wollen nur den computernamen also schneiden wir den ''CN='' teil einfach weg
Ping(res.GetDirectoryEntry().Name.Replace("CN=", ""));
}
Console.ReadLine();
}
static void p_PingCompleted(object sender, PingCompletedEventArgs e)
{
try
{
//wir wandeln das UserState Objekt in einen string um welcher unseren host darstellt.
Console.WriteLine("Ping statuse for ''{0}'' is ''{1}''",e.UserState.ToString(),e.Reply.Status);
}
catch (Exception)
{
Console.WriteLine(IPStatus.Unknown);
}
}
}
}
//
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170414
Url: https://administrator.de/forum/ping-abfrage-via-c-sharp-170414.html
Ausgedruckt am: 22.12.2024 um 01:12 Uhr
6 Kommentare
Neuester Kommentar
Hi,
wie du schon richtig erkannt hast, fehlt hier ein Verweis auf die System.DirectoryServices.dll.
Hinzufügen in Visual Studio geht so:
Im Projektmappen-Explorer müsste es einen Knoten "Verweise" geben > Rechtsklick > "Verweis hinzufügen..." > Registerkarte ".Net" > System.DirectoryServices > OK.
Viele Grüße - Bernd
wie du schon richtig erkannt hast, fehlt hier ein Verweis auf die System.DirectoryServices.dll.
Hinzufügen in Visual Studio geht so:
Im Projektmappen-Explorer müsste es einen Knoten "Verweise" geben > Rechtsklick > "Verweis hinzufügen..." > Registerkarte ".Net" > System.DirectoryServices > OK.
Viele Grüße - Bernd
Hi,
also so wie ich das dann verstanden habe, willst du alle PCs, die im ActiveDirectory stehen, anpingen. Richtig?
Wenn ja, dann sollte es z. B. so funktionieren, mal ein wenig "abgekürzt" ;):
Viele Grüße - Bernd
also so wie ich das dann verstanden habe, willst du alle PCs, die im ActiveDirectory stehen, anpingen. Richtig?
Wenn ja, dann sollte es z. B. so funktionieren, mal ein wenig "abgekürzt" ;):
using System;
using System.Net.NetworkInformation;
using System.DirectoryServices;
namespace Pinger
{
internal class Program
{
private static void Main()
{
const string domain = "DeineDomain.tld";
using (DirectoryEntry root = new DirectoryEntry(string.Concat("LDAP://", domain)))
{
DirectorySearcher searcher = new DirectorySearcher(root) { Filter = "(objectCategory=computer)" };
foreach (SearchResult res in searcher.FindAll())
{
if (res != null)
{
string curpcname = res.GetDirectoryEntry().Name.Replace("CN=", "");
PingReply curping = null;
try
{
curping = new Ping().Send(curpcname);
}
catch (PingException ex)
{
Console.WriteLine(string.Concat(curpcname, ": Fehler beim Pingen (", ex.InnerException.Message, ")"));
continue;
}
if (curping.Status == IPStatus.Success)
Console.WriteLine(string.Concat(curpcname, " ist erreichbar. (Antwortzeit ", curping.RoundtripTime, " ms)"));
else
Console.WriteLine(string.Concat(curpcname, " ist NICHT erreichbar."));
}
}
}
Console.WriteLine();
Console.WriteLine("Fertig...");
Console.ReadKey();
}
}
}
Viele Grüße - Bernd