Audi Geschrieben 28. Februar 2008 Geschrieben 28. Februar 2008 Hallo, will nur den DomainNamen/WorkgroupNamen ausgeben, welche Funktion benutze ich da am besten? Habe nachgeschaut es gibt min. 2: get_DomainDNSName getDomainName welche ist besser, oder gibt es noch welche die leichter zu handhaben ist?
Klotzkopp Geschrieben 28. Februar 2008 Geschrieben 28. Februar 2008 get_DomainDNSNameDu meinst vermutlich das IADsADSystemInfo-Property DomainDNSName. Das ist ADSI. getDomainNameMeinst du WHSInfoClass.GetDomainName? Das hat nun mit normalem C++ gar nichts mehr zu tun. welche ist besser, oder gibt es noch welche die leichter zu handhaben ist? - GetComputerNameEx - NetWkstaGetInfo Aber das haben wir doch alles schon mal durchgekaut...
Audi Geschrieben 28. Februar 2008 Autor Geschrieben 28. Februar 2008 - GetComputerNameEx - NetWkstaGetInfo Aber das haben wir doch alles schon mal durchgekaut...
Klotzkopp Geschrieben 28. Februar 2008 Geschrieben 28. Februar 2008 Beide funzen auf Win98 nicht.Ich weiß, das hatten wir doch alles schon. Das gilt auch für IADsADSystemInfo::DomainDNSName, es sei denn, du installierst vorher die Active Directory Client Extension. Ich habs jetzt doch mit GetComputerName hinbekommen, brauche nur noch die Domäne Ausgabe.Was heißt denn "nur noch"? Dass du den Rechnernamen (genauer: den NetBIOS-Namen) mit GetComputerName ermitteln kannst, war doch klar. Klar war doch auch, dass nur der Domänenname ein Problem ist. Und was du tun kannst, um an den Domänennamen zu kommen, haben wir auch schon mehrfach durchgekaut. Warum machst du dazu immer wieder neue Threads auf? An der Situation ändert sich doch nichts.
Audi Geschrieben 28. Februar 2008 Autor Geschrieben 28. Februar 2008 Kannst du mir mit den Strigs einen Tip geben? Wie Lese ich Strings aus MS-DOS aus?
Klotzkopp Geschrieben 29. Februar 2008 Geschrieben 29. Februar 2008 Wie Lese ich Strings aus MS-DOS aus?Die Eingabeaufforderung hat mit MS-DOS nichts zu tun. Leite die Ausgabe in eine Datei um und lies die Datei ein. Hier ist ein Beispiel für ein deutsches Windows XP: #include <iostream> #include <fstream> #include <sstream> #include <string> #include <cstdio> using namespace std; int main() { remove( "out.txt" ); system( "cmd /C net config workstation > out.txt"); string domainKey = "Arbeitsstationsdom\x84ne"; string nameKey = "Computername"; string domain, name, dummy; { ifstream file("out.txt"); string line; while( getline( file, line ) ) { if( domain.empty() && line.find( domainKey ) != string::npos ) { istringstream( line ) >> dummy >> domain; } if( name.empty() && line.find( nameKey ) != string::npos ) { istringstream( line ) >> dummy >> name; } } } remove( "out.txt" ); cout << name << '\n' << domain << '\n'; }[/code]
Audi Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 ok ich habs! aber viel einfacher: system("net config workstation > C:\\Text.txt"); Muss jetzt noch den Text Zeichenweise einlesen, filtern bzw. sagen wo er was ausgeben soll. thx für deine Hilfe!!!
Klotzkopp Geschrieben 29. Februar 2008 Geschrieben 29. Februar 2008 aber viel einfacher: system("net config workstation > C:\\Text.txt");Damit wirst du zumindest unter Vista Probleme bekommen, denn da hast du, soweit ich weiß, als normaler Benutzer keine Schreibrechte auf C:\. Muss jetzt noch den Text Zeichenweise einlesen, filtern bzw. sagen wo er was ausgeben soll.Der Code zum Einlesen und Filtern ist doch in meinem Beispiel schon drin. :confused:
Audi Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 Echt, überhaupt auf der C Platte? Also geht Eigene Dateien auch nicht?
Klotzkopp Geschrieben 29. Februar 2008 Geschrieben 29. Februar 2008 Echt, überhaupt auf der C Platte?Nicht auf dem ganzen Laufwerk. Im Wurzelverzeichnis. Es wäre schlecht, wenn ein Benutzer nicht seine Eigenen Dateien verändern könnte
Audi Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 Wie kann ich z.B die 3Zeile auslesen aus so einem Text: Name;;;;;;;;;Kölsch Vorname;;;;;;Klaus Alter;;;;;;;;;;drei :confused: Strichpunkte sind Leerzeichen, Editor kann irgendwie keine Leerzeichen ausgeben.
Klotzkopp Geschrieben 29. Februar 2008 Geschrieben 29. Februar 2008 Schau dir meinen Beispielcode an. Genau das, was du suchst, passiert da, nur dass das Schlüsselwort "Computername" heißt, nicht "Alter". Die Anzahl der Leerzeichen zwischen den Wörtern ist dabei völlig egal, die überspringt der >>Operator sowieso.
Audi Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 Ich habe es bischen falsch formuliert! Dein Programm läuft und ich habe auch schon eine Lösung, aber auf die zweite Lösung komme ich nicht, das Problem dabei ist ja dass es für alle Sprachen sein soll, da kann ich mich nicht auf Namen beziehen. In Deutsch habe ich dass Problem schon nach 10Min. gelöst funzt perfekt auf jedem OS, aber mit den verschiedenen Sprachen ist es schwieriger, da ich noch nicht mal weiß welche Sprachen das Programm unterstützen soll, ist aber auch egal, muss mit jeder laufen. Ich muss das Wort hinter den vielen Leerzeichen ausgegeben bekommen auch wenn die Zeile so aussiet:" Computer bla bla;;;;;;;Nummer".
Audi Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 Die Lösung müsste irgenwie so aussehen: Schaue in die Zeile 15 "Wort1" "Wort2" (zwischen Wort1und2 ist immer nur max. 1Leerzeichen) überspringe alle Leerzeichen die danach kommen, bis das nächste Wort(Wort3) kommt, gebe Wort3 aus.
TDM Geschrieben 3. März 2008 Geschrieben 3. März 2008 C++ Programming HOW-TO: The Standard C++ Library string class -> "7.3 A string tokenizer" Splitte einfach nach Leerzeichen und dann trime. :floet:
Audi Geschrieben 4. März 2008 Autor Geschrieben 4. März 2008 Danke! werds später mal ausprobieren,, bin jetzt an einem anderen Problem dran.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden