Netzwerk durchsuchen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von DarkDeviLw.

    @EaranMaleasi,
    es ist möglich mit .net (sofern man zb eine Passenden Rechner mit einer Service-card hat) ein IMG auf diesen Rechner über das netzt zu installieren.

    Ich habe zb. eine Service-Card in meinem PC die ich über eine IP Adresse ansteuern kann und somit ua. mein Festplattenraid umstellen kann.
    Es ist auch möglich das Betriebssystem darüber neu aufzusetzen.

    Die frage wäre halt nur in wie weit dieses über die normale Netzwerkarte machbar ist :) und irgendwie geht immer^^

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @EaranMaleasi,
    es ist eine Eigenständige Karte (die am meist bekanntesten von Dell DRAC) normalerweise gedacht für Server.
    Diese hat eine eigene Stromversorgung und kann sich im fall eines Servers über die Netzwerkarte eine eigene IP ziehen
    Somit kann die Karte auch angesteuert werden wenn der Ziel PC nicht angeschaltet ist.

    in meinen Fall die DELL Remote Service Card DRAC III mit einen Passenden PCI Adapter
    der Adapter liefert hier auch eine Netzwerkarte mit!

    EDIT: Angeblich soll es auch KVM's geben die per IP angesteuert werden können und zwischen zb. Festplatte und Mainboard geschaltet kommen

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Ruerte“ ()

    Es muss doch aber irgendeine Möglichkeit geben, einfach die Rechner zu finden im Netzwerk die eingeschaltet sind oder?

    Mal abgesehen jetzt vom zurücksetzen, muss ja eh erst überprüfen ob die Rechner im Netzwerk angebunden sind oder halt nicht.

    Ich dachte mir das so, ich habe eine CheckedListBox erstellt darüber kann man auswählen welche Rechner zurück gesetzt werden können und welche nicht.
    Dazu möchte ich noch hinzufügen das die Rechner die sich nicht im Netzwerk befinden, das diese auch über die CheckedListBox nicht auswählbar sind (ausgegraut)
    Somit müsste ich heraus finden ob der Rechner sich im Netzwerk befindet oder nicht (nicht der eigene Rechner sondern von Rechner A soll im Netzwerk Rechner B gesucht werden)

    Ist dies möglich? Wenn ja, wie? :)

    Liebe Grüße
    ist möglich,
    du machst dir ne liste mit den ips der rechner (rechnername)
    und diese pingt du einfach an (dazu verwendest du am einfachsten my.computer.network.ping)

    auch wenn ich nicht gerne auf den My-Namespace verweise.
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

    Linkai schrieb:

    ist möglich,
    du machst dir ne liste mit den ips der rechner (rechnername)
    und diese pingt du einfach an (dazu verwendest du am einfachsten my.computer.network.ping)

    auch wenn ich nicht gerne auf den My-Namespace verweise.


    Okay erstmal vielen Dank, werde es jetzt mal versuchen :)
    melde mich dann nochmal :)

    Liebe Grüße
    Ich habe nun herausgefunden das es dazu eine Klasse gibt Namens GetNetShare

    diese würde ich gerne verwenden. Kennt sich damit Jemand aus?
    Möchte daraus gerne die Funktion aufrufen die IpAdressen ausgibt.

    Hier ist die Klasse:

    C#-Quellcode

    1. public class GetNetShares
    2. {
    3. #region External
    4. [DllImport("Netapi32.dll", SetLastError = true)]
    5. static extern int NetApiBufferFree(IntPtr Buffer);
    6. [DllImport("Netapi32.dll", CharSet = CharSet.Unicode)]
    7. private static extern int NetShareEnum(
    8. StringBuilder ServerName,
    9. int level,
    10. ref IntPtr bufPtr,
    11. uint prefmaxlen,
    12. ref int entriesread,
    13. ref int totalentries,
    14. ref int resume_handle
    15. );
    16. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    17. public struct SHARE_INFO_1
    18. {
    19. public string shi1_netname;
    20. public uint shi1_type;
    21. public string shi1_remark;
    22. public SHARE_INFO_1(string sharename, uint sharetype, string remark)
    23. {
    24. shi1_netname = sharename;
    25. shi1_type = sharetype;
    26. shi1_remark = remark;
    27. }
    28. public override string ToString()
    29. {
    30. return shi1_netname;
    31. }
    32. }
    33. #endregion
    34. const uint MAX_PREFERRED_LENGTH = 0xFFFFFFFF;
    35. const int NERR_Success = 0;
    36. private enum NetError : uint
    37. {
    38. NERR_Success = 0,
    39. NERR_BASE = 2100,
    40. NERR_UnknownDevDir = (NERR_BASE + 16),
    41. NERR_DuplicateShare = (NERR_BASE + 18),
    42. NERR_BufTooSmall = (NERR_BASE + 23),
    43. }
    44. private enum SHARE_TYPE : uint
    45. {
    46. STYPE_DISKTREE = 0,
    47. STYPE_PRINTQ = 1,
    48. STYPE_DEVICE = 2,
    49. STYPE_IPC = 3,
    50. STYPE_SPECIAL = 0x80000000,
    51. }
    52. public static SHARE_INFO_1[] EnumNetShares(string Server)
    53. {
    54. var ShareInfos = new List<SHARE_INFO_1>();
    55. int entriesread = 0;
    56. int totalentries = 0;
    57. int resume_handle = 0;
    58. int nStructSize = Marshal.SizeOf(typeof(SHARE_INFO_1));
    59. IntPtr bufPtr = IntPtr.Zero;
    60. var server = new StringBuilder(Server);
    61. int ret = NetShareEnum(server, 1, ref bufPtr, MAX_PREFERRED_LENGTH, ref entriesread, ref totalentries, ref resume_handle);
    62. if (ret == NERR_Success)
    63. {
    64. IntPtr currentPtr = bufPtr;
    65. for (int i = 0; i < entriesread; i++)
    66. {
    67. var shi1 = (SHARE_INFO_1)Marshal.PtrToStructure(currentPtr, typeof(SHARE_INFO_1));
    68. ShareInfos.Add(shi1);
    69. //Remember, 64-bit systems have 64-bit pointers. Using ToInt32 will cause an ArithmeticOverview exception.
    70. //Use ToInt64 if you need to.
    71. currentPtr = new IntPtr(currentPtr.ToInt32() + nStructSize);
    72. }
    73. NetApiBufferFree(bufPtr);
    74. return ShareInfos.ToArray();
    75. }
    76. else
    77. {
    78. ShareInfos.Add(new SHARE_INFO_1("ERROR=" + ret.ToString(), 10, string.Empty));
    79. return ShareInfos.ToArray();
    80. }
    81. }
    82. }


    Hoffe es kann mir Jemand helfen, verzweifel langsam echt :(
    Hey,

    wie Fortgeschritten bist du eigentlich in C#?
    Bist du überhaupt schon in der Lage solch ein Projekt fertigzustellen?
    Du hast diese Klasse im Internet gefunden aber weißt du auch was Zeile für Zeile dieses Codes tut?

    Soweit ich lesen kann weißt du ja nicht wie man mit Klassen bzw. Funktionen arbeitet, Ich würde das mal lernen
    und vielleicht an nem kleineren Projekt und nicht gleich bei nem Projekt das mehrere PC's verwalten soll.
    Ich glaube dir ist das NOCH eine Nummer zu hoch.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    sabrina123451 schrieb:

    Möchte daraus gerne die Funktion aufrufen die IpAdressen ausgibt.
    Die ist da nicht drin.
    Da gibt's nur eine Funktion, die dir die Netzwerkfreigaben (Shares) für einen Server listet, dessen Servernamen oder IP-Adresse du angeben musst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich gehe die Sache nun etwas anders an,
    und zwar möchte ich erstmal gerne alle eingeschalteten PC´s in meiner Domaine auslesen.

    C#-Quellcode

    1. private void btnFindPC_Click(object sender, EventArgs e)
    2. {
    3. DirectoryEntry root = new DirectoryEntry("WinNT:");
    4. foreach (DirectoryEntry computers in root.Children)
    5. {
    6. foreach (DirectoryEntry computer in computers.Children) ;
    7. ListNote.Items.AddRange(myNoteList);
    8. }


    Muss dabei noch etwas hinzugefügt werden?
    Wenn ja, was genau? :)

    PS: Habe die Klasse von oben raus geschmissen.

    LG

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DarkDeviLw“ ()