Windowsversion-Überprüfung überlisten oder ggf. komplett ausbauen

  • VB6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Luki.

    Windowsversion-Überprüfung überlisten oder ggf. komplett ausbauen

    Hallo zusammen,

    meine Eltern nutzen eine alte Anwendung in ihrem Handwerksbetrieb zum Rechnungen schreiben, drucken, usw., die wohl noch mit VB5 oder VB6 geschrieben wurde, aber so weit noch super funktioniert. Allerdings prüft die Software die Windowsversion und weigert sich zu starten, wenn das System zu neu ist.

    Nun musste ich am Wochenende auf dem PC von meinem Papa Windows neuinstallieren wegen ständigen unerklärbaren Bluescreens, und muss jetzt diese Software wieder auf Windows 10 zum laufen kriegen. Wenn ich mich richtig erinnere, hat mein Bruder das damals mithilfe des Microsoft Tools "Application Verifier" gemacht, dort konnte man eine HighVersionLie eintragen und die Windows Version "spoofen". Wir haben auch zwei weitere PCs, auf denen die Software ohne Probleme unter Windows 10 läuft. Allerdings funktioniert das komischerweise auf dem PC von meinem Papa nicht (mehr). Auch die von Windows bereitgestellten Kompatibilitätseinstellungen verschaffen keine Abhilfe.

    Ich bin leider mit meinem Latein am Ende und weiß nun nicht so recht, wie ich weitermachen soll. Kann ich evtl. in der Registry noch irgendwelche Änderungen vornehmen? Oder gibt es evtl. eine .dll, die einen "Shim" für die Versionsabfrage bereitstellt, die ich einfach im Anwendungsverzeichnis ablegen kann? Die Software benutzt zur Versionsabfrage soweit ich das erkennen konnte die sogenannte GetVersionEx-Api.

    Im schlimmsten Fall würde ich sogar versuchen, die .exe zu dekompilieren und die betreffende Codestelle rauszuwerfen, allerdings bin ich mir nicht sicher ob das so einfach möglich ist. Programmiererfahrung habe ich, allerdings nur in Java...

    Ich hoffe, jemand von euch kann mir weiterhelfen.

    Liebe Grüße
    Lukas
    @Luki Willkommen im Forum. :thumbup:
    Das solltest Du ohne zu programmieren hinkriegen.
    Geh in den Explorer auf die Exe, rechte Maustaste, Kontextmenü
    => Eigenschaften => Kompatibilität
    da findest Du Einstellungen, die Du mal probieren kannst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi Rod, danke für die Antwort :thumbup:
    Ich habe gerade nochmal alle Optionen im genannten Kontextmenü ausprobiert, leider hilft das nicht, es wird trotzdem die zu neue Version erkannt.

    Das Programm führt zu Beginn eine Art Boottest durch und versucht die Windows-Version zu erkennen. Auf dem "Problemrechner" wird folgendes ausgegeben (Bild). Auf den zwei anderen PCs, bei denen wir die Software erfolgreich überlisten konnten, wird statt "Code: 602" z.B. einfach "Windows 7" angezeigt, welche die letzte unterstütze Windows-Version ist.
    Hi, Luki.

    Willkommen, auch von mir.

    Wenn alle stricke reissen, dann vielleicht mit einer virtuellen Maschine, dort dann Windows XP installieren.

    Diese "VM" dann starten und nur für das Programm nutzen.

    Wenn es ein Windows 10 Rechner ist, evtl. Hyper-V nutzen,

    oder gar die freie Software "VirtualBox".

    Das ist das "Allheilmittel*" wenn Kompatibilität notwendig ist.

    * Das Kleingedruckte sind die Einrichtung und die Resourcen die evtl. ein "Overhead" bedeuten.
    z.B. ist Hyper-V Resourcen schonender, wenn VM´s ab Windows 7 laufen.
    Aber es kann genau bei der "Prüfung" durchreichen, das ein Windows 10 der Unterbau ist. (Ist selten, kommt aber vor :( )

    VirtualBox ist sowas von altbacken aussehend... Ach ja, soll ja auch was altes zum Laufen bringen. :)

    Das wärn meine zwei Cent´s.

    c.u. und erstmal Kaffee... dann klappt es auch mit alter Software.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Joshi“ ()

    Luki schrieb:

    Im schlimmsten Fall würde ich sogar versuchen, die .exe zu dekompilieren und die betreffende Codestelle rauszuwerfen

    Im Gegensatz zu .NET-Programmen kommt man an den Quellcode von VB6 und früher nicht dran. Du kannst die Software maximal disassemblieren (das geht immer), aber das wird dir vmtl. nichts bringen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Luki schrieb:

    eine alte Anwendung (…) zum Rechnungen schreiben, drucken, usw.,
    Sollte man lieber mal prüfen ob die auch alle aktuellen Gesetzlichen Vorgaben (GOBD und co.)… bei sowas steht mal sehr schnell mit einem Fuß im Knast.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo zusammen, ich konnte das Problem gerade eben nach stundenlangem rumgesuche lösen, und es war letztendlich einfacher als gedacht :thumbsup: Nichtsdestotrotz vielen Dank für eure Beiträge!

    Und zwar habe ich mal den Programmstart mit dem Tool "Process Monitor" von Sysinternals mitverfolgt. Dort ist mir aufgefallen, dass versucht wird, eine Datei namens "NoOSCheck.pgr" zu öffnen. Diese existierte aber nicht, also hab ich sie kurzerhand angelegt und mit dem Texteditor eine 1 reingeschrieben. Siehe da, das Programm startet ohne zu Murren... Ein Glück, dass der Entwickler es sich so einfach macht :D

    @mrMo
    Ja das mit den gesetzlichen Vorgaben ist so 'ne Sache... Ich denke nicht dass das alles 100% passt, ich werd' meine Eltern auf jeden Fall mal darauf ansprechen :thumbup: