AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows-CD erkennen

Ein Thema von MathiasSimmack · begonnen am 16. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Windows-CD erkennen

  Alt 16. Jan 2005, 23:57
So, jetzt habe ich endlich mal wieder ein kleines Programm, das mich reizt , und da brauche ich glatt mal Hilfe.

Ihr kennt doch diese Funktion, wenn man aufgefordert wird, die Windows-CD einzulegen, weil bspw. was nachträglich zu installieren ist. Und irgendwie erkennt das System die CD und fordert ggf. die richtige an. Ich würde etwas ähnliches gern nutzen, daher die Frage: Wie kann ich zweifelsfrei erkennen ob eine Windows 2000-, Windows XP- oder meinetwegen auch Win 2003-CD im Laufwerk liegt? 2000 und XP wären mir am wichtigsten, denn die kann ich notfalls zum Testen organisieren.

Ich habe das mal bei einem Programm gesehen, das in einem Label anzeigte, um welche Version es sich handelt. Da stand dann so was wie "Windows XP Professional", glaube ich Es hat jedenfalls gestimmt. Gibt es da irgendeine API-Erkennungsfunktion, die euch bekannt ist und die man nutzen kann? Keine Ahnung, gibt´s da vllt. spezielle Dateien oder Daten auf der CD, die man ausliest und mit denen man ermitteln kann, was für ein Windows das ist ... Na ja, so was jedenfalls.


Ich hab´s erst mal in diese Sparte geschrieben. Wenn es API- oder ähnliche Funktionen gibt, kann ein Mod den Beitrag dann ja gern verschieben.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Windows-CD erkennen

  Alt 17. Jan 2005, 01:06
Guck mal in diese beiden dateien deiner Windows CD:
Zitat:
\CDROM_IS.5;\
\CDROM_NT.5;\
da steht bei mir
Zitat:
W2k
drinne und es ist eine Windows 2000 Professional CD.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#3

Re: Windows-CD erkennen

  Alt 17. Jan 2005, 04:36
Zitat von MathiasSimmack:
gibt´s da vllt. spezielle Dateien oder Daten auf der CD, die man ausliest und mit denen man ermitteln kann, was für ein Windows das ist
Du könntest z.B. die gepackte Kernel32 Datei entpacken und die Version auslesen. Mal ein kleines Beispiel:

Delphi-Quellcode:
function SetupDecompressOrCopyFile(SourceFileName, TargetFileName: PChar; CompressionType: Pointer)
  : DWORD; stdcall; external 'SETUPAPI.DLLname 'SetupDecompressOrCopyFileA';
Delphi-Quellcode:
function GetWinCDVersion(const I386Path: String; var Major, Minor, Build, Revision: Word): Boolean;
var
  TempFileName: array[0..MAX_PATH] of Char;
  SourceFileName: String;
  VerInfoSize: DWORD;
  VerInfo: Pointer;
  VerValue: PVSFixedFileInfo;
begin

  Result := False;
  SourceFileName := IncludeTrailingBackslash(I386Path) + 'KERNEL32.DL_';
  if FileExists(SourceFileName) then
    if GetTempPath(SizeOf(TempFileName), TempFileName) > 0 then
      if (GetTempFileName(TempFileName, nil, 0, TempFileName) > 0) and (GetLastError = NO_ERROR) then
        if SetupDecompressOrCopyFile(PChar(SourceFileName), TempFileName, nil) = NO_ERROR then
        begin
          VerInfoSize := GetFileVersionInfoSize(TempFileName, DWORD(nil^));
          if VerInfoSize > 0 then
          begin
            GetMem(VerInfo, VerInfoSize);
            try
              if GetFileVersionInfo(TempFileName, 0, VerInfoSize, VerInfo) then
                if VerQueryValue(VerInfo, '\', Pointer(VerValue), DWORD(nil^)) then
                  with VerValue^ do
                  begin
                    Major := dwFileVersionMS shr 16;
                    Minor := dwFileVersionMS and $FFFF;
                    Build := dwFileVersionLS shr 16;
                    Revision := dwFileVersionLS and $FFFF;
                    DeleteFile(TempFileName);
                    Result := True;
                  end;
            finally
              FreeMem(VerInfo);
            end;
          end;
        end;

end;
Das läuft so aber nur unter Windows NT/2k/XP/2k3. Auf 'ner Windows 9x CD musst du dir die CAB Dateien vornehmen. Kann dir aber leider nicht sagen, woran man erkennen kann ob es eine Workstation oder Server Version ist.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Windows-CD erkennen

  Alt 17. Jan 2005, 12:45
Ich könnte auch die Versionsnummer des Setup im Root prüfen. Na ja, ich werde mir das mal durch den Kopf gehen lassen.

Ich muss erst mal noch ein Aktualisierungsproblem in dem Programm fixen. Es startet via "ShellExecuteAndWait" (von Assa) ein paar Programme, wird dadurch aber nicht aktualisiert (das Fenster, meine ich). Das sieht natürlich unschön aus, wenn man was anderes drüber packt, usw. Ihr wisst schon. Das ist erst mal wichtiger.


Edit-PS: trotzdem Danke erst mal bis hier.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz