Computer Daten auslesen [Fehler beim schreiben in eine .txt]
-
Last-Boyscout schrieb:
Deli1 schrieb:
Ich glaube, das was du suchst, ist die Funktion c_str()
Also:
string outfile = ComputerName + ".txt"; ofstream Computerdaten(outfile.c_str(), ios::out); // anstatt ofstream Computerdaten(outfile, ios::out);
So was ähnliches habe ich schon probiert.
Bekomme aber diese Fehlermeldung:
invalid operands of types `char[16]' and `const char[5]' to binary `operator+'gruß
Last-Boyscoutdatentypen anpasssen.
gruß
t.l.w.
-
Wie
Oder besser gesagt, wie mach ich das richtig?
gruß
Last-Boyscout
-
Hab gerade keinen Compiler hier. Das geht in etwa so:
string ComputerName; ComputerName.resize(MAX_COMPUTERNAME_LENGTH + 2); DWORD cbComputerName = MAX_COMPUTERNAME_LENGTH +1; if ( GetComputerName ( &ComputerName[0], &cbComputerName ) == false ) { cout << "Kagge!" << endl; ComputerName.clear(); } else ComputerName += ".txt";
Geht aber nur gut, wenn du nicht Unicode compilierst. Sonst gibts eventuell nen Pufferüberlauf ( 1 wchar_t Zeichen benötigt mehr Bytes als ein char ). Besser, gleich TCHAR nehmen, bzw. wstring.
-
es ist illegal direkt in den string einzulesen!!! du musst den umweg über ein std::vector gehen!!!
-
!!! schrieb:
es ist illegal direkt in den string einzulesen!!! du musst den umweg über ein std::vector gehen!!!
Kommt dann die Bohlizei?
Habe festgestellt, das bei meinem Beispiel Schrott rauskommt. Hier ne Korrektur:
string computer_name; char buf[MAX_COMPUTERNAME_LENGTH +1] = {0}; DWORD cbComputerName = sizeof(buf); if ( GetComputerNameA ( buf, &cbComputerName ) == false ) { cout << "Kagge!" << endl; return 1; } else { computer_name = buf; cout << computer_name << " is a computer !" << endl; computer_name += ".txt"; } cout << "I am a textfile name now :( " << computer_name << endl; return 0;
Nen vector kann man sich sparen. MfG,
t.l.w.
-
Nen vector kann man sich sparen.
nur wenn man gegen den c++ standard anproggt
-
achso hast jetzt ein char array genommen. dann ist es ja okay.
-
class Win32_BIOS : CIM_BIOSElement { uint16 BiosCharacteristics[]; string BIOSVersion[]; string BuildNumber; string Caption; string CodeSet; string CurrentLanguage; string Description; string IdentificationCode; uint16 InstallableLanguages; datetime InstallDate; string LanguageEdition; String ListOfLanguages[]; string Manufacturer; string Name; string OtherTargetOS; boolean PrimaryBIOS; datetime ReleaseDate; string SerialNumber; string SMBIOSBIOSVersion; uint16 SMBIOSMajorVersion; uint16 SMBIOSMinorVersion; boolean SMBIOSPresent; string SoftwareElementID; uint16 SoftwareElementState; string Status; uint16 TargetOperatingSystem; string Version; };
Hi, mir fehlen noch die Infos zum Service Tag von Dell.
Ich habe hier eine Bios Klasse von der MSDN von Microsoft.
Bräuchte aber noch Hilfe mit dem Umgang damit.Eigentlich interessiert mich da der string Serial Number am meisten!^^
Wie binde ich diese Klasse überhaupt richtig an, sodass ich die Elemente richtig ansprechen kann?
-
Last-Boyscout schrieb:
class Win32_BIOS : CIM_BIOSElement { uint16 BiosCharacteristics[]; string BIOSVersion[]; string BuildNumber; string Caption; string CodeSet; string CurrentLanguage; string Description; string IdentificationCode; uint16 InstallableLanguages; datetime InstallDate; string LanguageEdition; String ListOfLanguages[]; string Manufacturer; string Name; string OtherTargetOS; boolean PrimaryBIOS; datetime ReleaseDate; string SerialNumber; string SMBIOSBIOSVersion; uint16 SMBIOSMajorVersion; uint16 SMBIOSMinorVersion; boolean SMBIOSPresent; string SoftwareElementID; uint16 SoftwareElementState; string Status; uint16 TargetOperatingSystem; string Version; };
Hi, mir fehlen noch die Infos zum Service Tag von Dell.
Ich habe hier eine Bios Klasse von der MSDN von Microsoft.
Bräuchte aber noch Hilfe mit dem Umgang damit.Eigentlich interessiert mich da der string Serial Number am meisten!^^
Wie binde ich diese Klasse überhaupt richtig an, sodass ich die Elemente richtig ansprechen kann?
Hat einer dazu eine Idee?
Hab gegoogelt, verschiedene Threads angeguckt und finde jedesmal ein schönes vb.net Beispiel.strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colBIOS = objWMIService.ExecQuery _ ("Select * from Win32_BIOS") For each objBIOS in colBIOS Wscript.Echo "Build Number: " & objBIOS.BuildNumber Wscript.Echo "Current Language: " & objBIOS.CurrentLanguage Wscript.Echo "Installable Languages: " & objBIOS.InstallableLanguages Wscript.Echo "Manufacturer: " & objBIOS.Manufacturer Wscript.Echo "Name: " & objBIOS.Name Wscript.Echo "Primary BIOS: " & objBIOS.PrimaryBIOS Wscript.Echo "Release Date: " & objBIOS.ReleaseDate Wscript.Echo "Serial Number: " & objBIOS.SerialNumber Wscript.Echo "SMBIOS Version: " & objBIOS.SMBIOSBIOSVersion Wscript.Echo "SMBIOS Major Version: " & objBIOS.SMBIOSMajorVersion Wscript.Echo "SMBIOS Minor Version: " & objBIOS.SMBIOSMinorVersion Wscript.Echo "SMBIOS Present: " & objBIOS.SMBIOSPresent Wscript.Echo "Status: " & objBIOS.Status Wscript.Echo "Version: " & objBIOS.Version For i = 0 to Ubound(objBIOS.BiosCharacteristics) Wscript.Echo "BIOS Characteristics: " & _ objBIOS.BiosCharacteristics(i) Next Next
Sowas habe ich leider aber nicht ansatzweise in C++ gefunden.
Hat da keiner eine Idee?gruß
Last-Boyscout
-
Hallo,
das ist etwas komplizierter in C++, siehe z.B. unter "BIOS Seriennummer mit WMI auslesen (Win32_BIOS-Klasse)" hier:
http://fatman98.fa.funpic.de/builder_tricks.php
Musst du natürlich etwas anpassen (AnsiString gibt's z.B. nicht in Visual C++), und die richtigen Header einbinden usw...
MfG,
Probe-Nutzer