Entwickler-Ecke
IO, XML und Registry - Externe Rechner DriverInfo
kostonstyle - Di 20.07.10 13:34
Titel: Externe Rechner DriverInfo
Hallo miteinander
wie kann ich die Laufwerke von einen externe Rechner anbinden, also Informationen auslesen?
Für lokal habe ich folgendes gefunden
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| System.IO.DriveInfo[] allDrives = System.IO.DriveInfo.GetDrives();
foreach (System.IO.DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine(" File type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine( " Available space to current user:{0, 15} bytes", d.AvailableFreeSpace);
Console.WriteLine( " Total available space: {0, 15} bytes", d.TotalFreeSpace);
Console.WriteLine( " Total size of drive: {0, 15} bytes ", d.TotalSize); } }
Console.ReadLine(); |
Danke kostonstyle
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Di 20.07.2010 um 15:54
Trashkid2000 - Sa 24.07.10 11:08
Hallo kostonstyle,
ich denke, der einfachste Weg ist der mit WMI. Ob das aber der schnellste Weg ist, um Informationen abzufragen, weiss ich nicht. Bei Verweise in deinem Projekt musst Du ein Verweis auf System.Management hinzufügen.
Ansonsten, dort, wo nun bei ManagementScope "localhost" steht, muss entweder die IP oder der Hostname des entfernten Rechners stehen.
Viel erfolg damit, Marko
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| class Program { private enum DriveType { unbekannt, kein_Hauptverzeichnis, Wechselmedium, Festplatte, Netzwerklaufwerk, CD_DVD, RAMDisk }
static void Main(string[] args) { ConnectionOptions opt = new ConnectionOptions(); ObjectQuery oQuery = new ObjectQuery("SELECT Size, FreeSpace, Name, FileSystem, DriveType " + "FROM Win32_LogicalDisk"); ManagementScope scope = new ManagementScope("\\\\localhost\\root\\cimv2", opt); ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(scope, oQuery); ManagementObjectCollection collection = moSearcher.Get();
foreach (ManagementObject res in collection) { decimal size = Convert.ToDecimal(res["Size"]) / 1024 / 1024 / 1024; decimal freeSpace = Convert.ToDecimal(res["FreeSpace"]) / 1024 / 1024 / 1024;
Console.WriteLine(string.Format("Laufwerk: {0}", res["Name"])); Console.WriteLine(string.Format("LaufwerksTyp: {0}", Enum.GetName(typeof(DriveType), res["DriveType"]))); Console.WriteLine(string.Format("Dateisystem: {0}", res["FileSystem"])); Console.WriteLine(string.Format("Laufwerksgröße: {0} GB", Decimal.Round(size, 2))); Console.WriteLine(string.Format("Freier Speicher: {0} GB", Decimal.Round(freeSpace, 2))); Console.WriteLine("-------------------------------------------------"); } Console.ReadKey(); } } |
jaenicke - Sa 24.07.10 11:23
Immer vorausgesetzt du hast die notwendigen Zugriffsrechte für den WMI-Zugriff auf den anderen PC.
Wenn du als Ziel vorhast auch Daten auszutauschen, rate ich dazu gleich ein Serverprogramm für den anderen PC zu schreiben.
kostonstyle - Mo 26.07.10 07:50
Hallo miteinander
erstmal vielen dank für euer Hilfe.
@jaenicke
wie du erraten hast, möchte ich mit externe Rechner Daten austauschen. Mein Ziel ist es, auf Ordner
\\Rechner\c$\order1\unterorder1 zuzugreifen und von meinem Rechner Daten hinüber kopieren.
Danke kostonstyle
jaenicke - Mo 26.07.10 19:18
Dann brauchst du aber immer noch ein Programm auf dem Server, dass diese Freigabe einrichtet. Bei Windows 95 und 98 war diese Standardfreigabe oft sogar direkt zu erreichen, bei heutigen Betriebssystemen ist der Zugriff darauf auf den Rechner selbst beschränkt.
Deshalb wäre ein kleines Serverprogramm oder eine andere als diese Freigabe sinnvoller zu verwenden.
Nebenbei: Wenn du diese Freigaben ohnehin schon einrichten willst, warum schaust du dann nicht einfach welche es gibt? ;-)
kostonstyle - Di 27.07.10 08:35
wo kann ich solches Programm finden? Habe im Netz gesucht, aber leider nichts gefunden....
Gruss kostonstyle
jaenicke - Di 27.07.10 19:04
Ich meinte eher ein selbst geschriebenes. ;-)
Aber es gibt auch diverse Fernwartungsprogramme wie UltraVNC, die solche und viele weitere Funktionen bieten. Und es ist grundsätzlich auch möglich auf den UVNC Server mit einem eigenen Programm zuzugreifen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!