• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapis parametrów komputera z CMD do pliku

Object Storage Arubacloud
0 głosów
235 wizyt
pytanie zadane 9 sierpnia 2023 w C i C++ przez Osky Nowicjusz (120 p.)

Chciałbym wypisać informacje do pliku o sprzęcie w komputerze, plik się zapisuje ale wszędzie jest wartość NULL

#include <iostream>
#include <fstream>

using namespace std;

string os, os_language, baseboard, baseboard_version, gpu;

int main()
{
    cout << "[System operacyjny oraz jezyk systemu]" << endl;
                   os = system("wmic os get Caption");
          os_language = system("wmic os get OSLanguage");
    cout << "[Model plyty glownej oraz wersja]" << endl;
            baseboard = system("wmic baseboard get Product");
    baseboard_version = system("wmic baseboard get Version");
    cout << "[Model karty graficznej]" << endl;
                  gpu = system("wmic path win32_VideoController get name");

    fstream info_o_systemie;
    info_o_systemie.open("info.txt",ios::out);

    info_o_systemie << os << endl;
    info_o_systemie << os_language << endl;
    info_o_systemie << baseboard << endl;
    info_o_systemie << baseboard_version << endl;
    info_o_systemie << gpu << endl;

    info_o_systemie.close();


    return 0;
}

 

komentarz 9 sierpnia 2023 przez tkz Nałogowiec (42,000 p.)

1 odpowiedź

0 głosów
odpowiedź 9 sierpnia 2023 przez Oscar Nałogowiec (29,320 p.)
W związku z komentarzem tkz zapytam, czy to się w ogóle kompiluje?

Zasadniczo są dwa rozwiązania - albo polecenia do systemu od razu przekierujesz do pliku (pierwszy raz używając '>', a następne razy '>>'), albo użyjesz funkcji popen. Dziala jak fopen (a więc na plikach w stylu "C"), tylko zamiast nazwy pliku podaje się polecenie. Jeśli otwarcie jest w trybie odczytu - z otwartego pliku/uchwytu można czytać wyniki polecenia, jeśli w trybie zapisu - można podawać dane dla uruchomionego polecenia. Jest też metoda kontroli zarówno wyników jak i danych wejściowych, ale to już jest bardziej skomplikowane niż 1 funkcja. Przypuszczam, że tzw "modern C++" ma już swoją nakładkę na taką funkcjonalność.
komentarz 9 sierpnia 2023 przez j23 Mędrzec (194,920 p.)
edycja 9 sierpnia 2023 przez j23

Mowa o Windowsie, więc nie popen a CreateProcess z ustawionymi potokami (CreatePipe) i/o.

PS. w zasadzie jest API do WMI, które daje dostęp do wszystkich informacji systemowych. Chociaż wydaje mi się, że użycie go może być zbyt skomplikowane dla początkującego.

komentarz 10 sierpnia 2023 przez Osky Nowicjusz (120 p.)
Tak, kompiluje się.

Właśnie miałem napisać, że udało mi się to zrobić jako komendę CMD z użyciem ">". Tylko teraz napotkałem kolejny problem, bo teraz program nie chce tego odczytać. Z tego co widzę, to przez kodowanie, w którym zapisuje CMD. Czy jest jakiś sposób na zmianę kodowania przy zapisie z konsoli? Próbowałem polecenia "chcp 65001" ale niestety wciąż zapisuje w kodowaniu domyślnym, czyli z tego, co wyczytałem, "Windows-1252".
komentarz 10 sierpnia 2023 przez j23 Mędrzec (194,920 p.)
A jak w konsoli wykonujesz tę komendę, to wyświetla się poprawnie?
komentarz 10 sierpnia 2023 przez Oscar Nałogowiec (29,320 p.)

@j23, Nie mam pod ręką żadnego Windows dla sprawdzenia, ale sprawdziłem że popen jest w stdio.h więc uznałem że jest w standarcie. Faktycznie, w sieci wspominają o tej funkcji w kontekście Linuxa ale na stronie Microsoftu znalazłem następujący przykład:

    if ((pPipe = _popen("dir *.c /on /p", "rt")) == NULL)
    {
        exit(1);
    }

 

komentarz 10 sierpnia 2023 przez j23 Mędrzec (194,920 p.)
Nawet nie wiedziałem, że Microsoft dodał swoją wersję tej funkcji. Dobrze wiedzieć ;)

Ciekawe jak z dostępnością tej funkcji na MinGW.

Podobne pytania

0 głosów
2 odpowiedzi 1,615 wizyt
+1 głos
2 odpowiedzi 101 wizyt
pytanie zadane 10 kwietnia w Python przez wojtas29321932942 Początkujący (280 p.)
0 głosów
2 odpowiedzi 906 wizyt
pytanie zadane 28 kwietnia 2015 w Systemy operacyjne, programy przez eVeezu Użytkownik (880 p.)

92,580 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...