AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Prüfen, ob VirtualStore aktiv ist
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen, ob VirtualStore aktiv ist

Ein Thema von berens · begonnen am 24. Nov 2011 · letzter Beitrag vom 24. Nov 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.576 Beiträge
 
Delphi 12 Athens
 
#1

AW: Prüfen, ob VirtualStore aktiv ist

  Alt 24. Nov 2011, 12:28
Zitat:
ein Manifest haben!
Und darin angeben daß dieses Programm Vista-/Win7-kompatibel ist, damit Windows garnicht erst auf die Idee kommt sowas wie den VirtualStore zu aktivieren.

Es gibt auch einen Befehl, um die Verzeichnisumleitungen (FileSystem) zu (de)aktivieren, aber im Moment fällt mir dieser nicht ein.
Gleiches gilt für die Registry.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
441 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Prüfen, ob VirtualStore aktiv ist

  Alt 24. Nov 2011, 12:41
Also ich habe mir nochmal die neuer Version von Deinem Manifestcreator runtergeladen. Bei meinem bestehenden Manifest haben tatsächlich die Zeilen
Code:
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
für Vista/W7 gefehlt. Komisch.

So sollte es klappen?

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="Private.Unknown.MySampleApp"
    type="Win32"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Um die Umleitung in der Registry zu deaktiveren, verwende ich TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY), wobei dies ja nur 64-Bit Systeme betrifft. Macht Windows / die UAC auch in der Registry eine Umleitung für HKLM?
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Prüfen, ob VirtualStore aktiv ist

  Alt 24. Nov 2011, 13:22
Im Prinzip reicht es auch aus "Themes" zu aktivieren.
Dadurch wird ein Manifest in die App gelinkt.
Dieses verhindert dann auch die Virtualisierung.

Diese "RedirectionActive" Prüfung halte ich für gefährlich.

Unter Windows 7 ist diese IMMER aktiv, wird aber abhängig von verarbeitenden Programm nicht angewendet. Bestimmt lässt Sie sich auch abschalten, was weitere Probleme für die Erkennung machen würde. Hinzu kommen noch die Kompatibilitäts-Modies. Kurz um, du kannst das nie mit Sicherheit sagen ob die an ist, ob die an war.

Ich denke euer Problem ist wie folgt zu umschreiben:
Wir haben eine nicht kompatibles Programm gehabt, damit ist das Kind in den Brunnen gefallen.
Nun haben wir eine kompatible Software und wollen den Fehler von damals beheben und die Kundendaten retten (, bei der neu Installation).

Da der Installationsort durch den Kunden geändert (in vielen Setups möglich) werden kann, müsstest du die Installation-Position vom alten Setup ermitteln.
Dann müsstest du in jedes Benutzerprofil schauen und deine Datei dort mit Hilfe des ermittelten Ordner suchen.
Wenn du das im Setup machst, dann hast du die erforderlichen Rechte dazu.
Das muss vor dem Deinstallieren der alten Version passieren. Sonst ist ja der Ordner nicht mehr zu ermitteln.
D.h. aber auch, dass du das nicht beim Programmstart machen kannst, sonst müsstest du jeden VirtualStore-Ordern des aktuellen Nutzers durchsuchen. Da das alte Setup zu dem Zeitpunkt dann weg ist, kann der Ordner nicht ermittelt werden. Auf anderen Nutzer hast du dann keinen Zugriff.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.576 Beiträge
 
Delphi 12 Athens
 
#4

AW: Prüfen, ob VirtualStore aktiv ist

  Alt 24. Nov 2011, 13:58
Im Prinzip reicht es auch aus "Themes" zu aktivieren.
Dadurch wird ein Manifest in die App gelinkt.
Dieses verhindert dann auch die Virtualisierung.
Jain.

Ja, es wird zwar ein Manifest eingelinkt, aber dieses ist dann nur für die CommonControls (Anzeige) zuständig.
Auf die Dateizugriffe hat dieses aber keinen Einfluß.


[add]
OK, die an-/abschaltbaren Umleitungsfunktionen, welche ich im Kopf hatte, bezogen sich wohl alle nur auf 32/64-Bit.
MSDN-Library durchsuchenWow64DisableWow64FsRedirection
MSDN-Library durchsuchenWow64EnableWow64FsRedirection
MSDN-Library durchsuchenWow64RevertWow64FsRedirection

Bleibt also vorerst nur der Weg über das Manifest.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Nov 2011 um 14:05 Uhr)
  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 16:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz