3 Stimmen

Wie aktualisiere ich eine VB6-Anwendung von XP auf Vista?

Ich arbeite an einer vb6-Anwendung, die Probleme mit Vista hat, aus den offensichtlichen Gründen (Schreiben in Programmdateien und andere Dinge, die standardmäßig nicht mehr erlaubt sind).

  • Wo sollte ich Anwendungsdaten oder vom Benutzer gespeicherte Dateien speichern?
  • Benötige ich dort auch Rechte zum Erstellen von Ordnern und Dateien?
  • Welche anderen gemeinsamen Aktionen können Probleme verursachen?
  • Das Programm hat einen Updater, der Dateien herunterladen und registrieren muss. Wie kann ich die Berechtigungen erhöhen, wenn dies geschieht?

Auf einige dieser Fragen gibt es offensichtliche Antworten, aber ich möchte die offensichtlichen Dinge richtig stellen.

3voto

Kris Erickson Punkte 32932

Je nachdem, was Sie tun, können Sie sich auf eine Welt voller Schmerzen gefasst machen. Es gibt keine festen und schnellen Antworten auf diese Fragen, aber von jemandem, der gerade die gleichen Probleme durchmacht, weiß ich Folgendes.

1) Wo sollte ich Anwendungsdaten oder gespeicherte Dateien der Benutzer speichern?

Das hängt davon ab, was Sie tun wollen. Wenn Sie sie pro Benutzer benötigen, speichern Sie sie in Users/AppData, wenn Sie sie für alle Benutzer benötigen, speichern Sie sie in Common/AppData

  If SHGetFolderPath(0, CSIDL_COMMON_APPDATA, -1, SHGFP_TYPE_CURRENT, sTempPath) = 0 Then
      sCommonAppdata = Left$(sTempPath, InStr(1, sTempPath, Chr(0)) - 1) &  "CompanyName\AppName"
  End If

Ändern Sie dies in CSIDL_APPDATA für das Verzeichnis Users AppData. Hinweis: Diese Verzeichnisse sind für XP und Vista an völlig unterschiedlichen Stellen im Dateisystem zu finden. Bereiten Sie sich also bei der Fehlersuche darauf vor, an unterschiedlichen Stellen zu suchen.

2) Benötige ich dort auch Rechte zum Erstellen von Ordnern und Dateien?

Sie benötigen Adminsitrator-Zugriff, um irgendetwas in die Programmdateien zu schreiben, tun Sie das nach Möglichkeit nicht! Wir sind derzeit Probleme bekommend dass die APIs für VB und die Standard-APIs sich bei Dateien in Programmdateien unterschiedlich verhalten.

3) Welche anderen gemeinsamen Aktionen können Probleme verursachen?

Es gibt eine Menge versteckter Probleme. Um nur einige zu nennen: Sie können nicht über IPC oder Named Pipes mit anderen Anwendungen kommunizieren (wir haben einen Dienst, mit dem wir über ein Benachrichtigungssymbol in der Taskleiste kommunizieren, und das musste komplett neu geschrieben werden). Alles, wo man eine UAC-Benachrichtigung sieht, ist sehr schwierig. Außerdem kann man in der Registry in LOCAL_MACHINE ohne Administrator nichts schreiben, also muss man entweder bei LOCAL_USER bleiben oder die Anmeldedaten erhöhen (siehe unten).

4) Das Programm hat einen Updater, der Dateien herunterladen und registrieren muss.

Viel Glück mit diesem, ich empfehle dringend, dass Sie es nicht in VB6 schreiben, wie ich sagte, die VB6-Datei api's scheinen Dateien anders als die Standard-API's zugreifen. Wenn Sie die Privilegien erhöhen müssen, sehen Sie hier nach Beitrag bei dem mir freundlicherweise jemand geholfen hat.

0voto

Jim Blizard Punkte 4256

Im Sortierbegriff Ausschalten der UAC und die Installation der ActiveX-Installationsserver wird helfen. Langfristig müssen Sie Daten und Konfigurationsinformationen in das Benutzerverzeichnis unter \users oder in \programdata.

0voto

Dirk Vollmar Punkte 166522

Kurzfristig ist es vielleicht gar nicht nötig, Ihre Anwendung zu ändern, denn Vista wird mit einer Reihe von Kompatibilitätsoptionen geliefert, die es ermöglichen, ältere Anwendungen auszuführen. Dazu gehört die Datei- und Registrierungsvirtualisierung, eine Funktion, die Schreibvorgänge grundsätzlich auf geschützte Ordner umleitet, wie z. B. C:\Program Dateien an einem virtuellen Speicherort, der nur für die jeweilige Anwendung sichtbar ist, die im Kompatibilitätsmodus läuft.

Einige weitere Einzelheiten sind in diesem Artikel aufgeführt: So verwalten Sie die Anwendungskompatibilität von Windows Vista in Dr. Dobb's.

0voto

MarkJ Punkte 29670

Karl Peterson schrieb einen schöner Artikel wo Benutzerdaten und Anwendungsdaten gespeichert werden sollen, mit einem VB6 Klasse die den Standort der speziellen Pfade für Sie abruft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X