Announcement

Collapse
No announcement yet.

Auslesen von Systeminformationen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auslesen von Systeminformationen

    Hallo Leute

    Welche API-Funktionen benötige ich, um alle Informationen aus der Systemübersicht auszulesen (Betriebssystemname, Version, Hersteller, Systemname, Systemhersteller, Systemmodell usw.) ??

  • #2
    RegOpenKeyEx, RegQueryValueEx, RegCloseKey

    ( <b>HKLM\SOFTWARE\Microsoft\Windows</b>( <b>NT</b>)<b>\CurrentVersion</b> )

    - nic

    Comment


    • #3
      Hey Nico

      Danke für die prompte Antwort. Gibt es auch eine andere Möglichkeit diese Infos dirket auszulesen (API-Funktion) ?

      Comment


      • #4
        Soweit ich weiß nicht,<br>
        da der Windows-Dialog es auf o.g. Weg aus der Registry liest, sehe ich auch keine Notwendigkeit einen anderen Weg zu suchen.

        - nic

        Comment


        • #5
          Beispiel...
          <pre><p><b>function</b> RegReadSystemInfo(ValueName: PChar; Data: PChar; Size: DWORD): Boolean;
          <b>var</b>
          Key: HKEY;
          SubKey: <b>array</b> [0..128] <b>of</b> Char;
          ValueType: DWORD;
          ValueSize: DWORD;
          <b>begin</b>
          Result := False;
          <b>if</b> (Data = <b>nil</b>) <b>or</b> (Size = 0) <b>then</b>
          Exit;
          lstrcpy(PChar(@SubKey), 'SOFTWARE\Microsoft\Windows');
          <b>if</b> (GetVersion() <b>and</b> $80000000 = 0) <b>then</b>
          lstrcat(PChar(@SubKey), ' NT');
          lstrcat(PChar(@SubKey), '\CurrentVersion');
          Key := 0;
          <b>if</b> (RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(@SubKey), 0, KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) <b>then</b>
          <b>try</b>
          ValueType := REG_NONE;
          ValueSize := Size;
          <b>if</b> (RegQueryValueEx(Key, ValueName, <b>nil</b>, @ValueType, <b>nil</b>, @ValueSize) = ERROR_SUCCESS) <b>and</b>
          (ValueType = REG_SZ) <b>and</b> (ValueSize <= Size) <b>then</b>
          <b>begin</b>
          Result := (RegQueryValueEx(Key, ValueName, <b>nil</b>, <b>nil</b>, PByte(Data), @ValueSize) = ERROR_SUCCESS);
          <b>end</b>;
          <b>finally</b>
          RegCloseKey(Key);
          <b>end</b>;
          <b>end</b>;
          <p>
          <i>// Test</i>
          <b>procedure</b> TForm1.Button1Click(Sender: TObject);
          <b>var</b>
          Data: <b>array</b> [0..1023] <b>of</b> Char;
          Size: DWORD;
          <b>begin</b>
          <b>if</b> RegReadSystemInfo('RegisteredOwner', PChar(@Data), SizeOf(Data)) <b>then</b>
          MessageBox(0, PChar(@Data), 'RegisteredOwner', MB_ICONINFORMATION);
          <b>end</b>;<p></pre>

          - nic

          Comment


          • #6
            Hey Nico

            Vielen Dank für deine Hilfe. Ich glaube ich werde es so machen

            Comment


            • #7
              die gibt es - und zwar sieht sie so aus:

              <PRE>

              String system;
              OSVERSIONINFO os;
              os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
              GetVersionEx(&os);

              switch (os.dwPlatformId)
              {
              case VER_PLATFORM_WIN32s:
              system = "Windows 32s";
              break;

              case VER_PLATFORM_WIN32_WINDOWS:
              system = "Windows 95";
              break;

              case VER_PLATFORM_WIN32_NT:
              system = "Windows NT";
              break;
              }

              system = system + " Version " +
              AnsiString((int)os.dwMajorVersion) + "." +
              AnsiString((int)os.dwMinorVersion) + " build " +
              AnsiString((int)(os.dwBuildNumber & 0xFFFF));
              </PRE&gt

              Comment


              • #8
                IMMER die richtige genaue Windows-Version auszugeben ist nicht ganz so einfach. Windows ME tarnt sich als Windows 98 falls das fragende Programm Setup.exe heisst.<br>
                Zu dieser und der originalen Frage bietet sich die Jedi code Library an. Dort sind allerlei Funktionen dazu vorhanden. http://delphi-jedi.org/CODELIBJC

                Comment


                • #9
                  Hallo,<br>

                  es gibt eine Menge (Freeware-)Komponenten mit Quelltext, die die Systeminfos auslesen.<br>
                  Ich nutze zum Beispiel X2000-Komponenten von Florian Baldemaier<br>([email protected])<br>
                  Die muss man an einigen Stellen noch ein bisschen aufbohren, weil sie<br>oft nicht variable genug sind, aber da ist so ziemlich alles dabei.<br>

                  Gruß<br>
                  Matthia

                  Comment

                  Working...
                  X