Seite 2 von 2

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 15:01
von amiga123
Danke

Aber das sucht sich das Programm dann selbst raus. Mit der Code von Thomas geht es wunderbar. Ob Windows2000, XP,Vista oder Window7, jetzt sucht sich das Programm den passenden Ordner und es läuft ohne Probleme.

Danke nochmal an Thomas

Gruß Herbert

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 18:55
von Mokota
Setze mich auch gerade mit dem Thema auseinander und hab ne Frage.
Und zwar gibt es ja auch Programme die den Nutzer selbst entscheiden lassen wo gespeichert werden soll. Also mit "SaveFileRequester" zum Beispiel.
Da braucht man doch dann zwingend Adminrechte oder? Wie macht das eigentlich Word etc, haben ms Programme da nen Sonderstatus?

Alles einfach in den Appdata-Ordner zu packen find ich nich so toll, normale nutzer finden die Dokumente so doch garnicht. Für Programmkonfiguration etc. machts natürlich schon Sinn.

EDIT: Noch was... entstehen nicht viele "Datenleichen" durch das Speichern im Appdata Ordner?
Da wäre wohl dann zwingend ein Setup erforderlich, damit beim Entfernen kein Müll zurückbleibt. Die wenigsten hier und in einigen anderen coms nutzen jedoch gerne Setups... und Setups benötigen ja auch wieder Adminrechte :|

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 19:21
von ts-soft
Mokota hat geschrieben:Setze mich auch gerade mit dem Thema auseinander und hab ne Frage.
Und zwar gibt es ja auch Programme die den Nutzer selbst entscheiden lassen wo gespeichert werden soll. Also mit "SaveFileRequester" zum Beispiel.
Da braucht man doch dann zwingend Adminrechte oder? Wie macht das eigentlich Word etc, haben ms Programme da nen Sonderstatus? |
Nein, die speichern auch dort, bzw. auch in der Registry. Dokumente werden im Dokumentenordner, bzw.
unter "Eigene Dateien" gespeichert.
Mokota hat geschrieben: Alles einfach in den Appdata-Ordner zu packen find ich nich so toll, normale nutzer finden die Dokumente so doch garnicht. Für Programmkonfiguration etc. machts natürlich schon Sinn.
Nur dafür sind diese Pfade ja gedacht, ursprünglich (mit Einführung von Win95) sollte alles in der Registry landen :mrgreen:
Mokota hat geschrieben: EDIT: Noch was... entstehen nicht viele "Datenleichen" durch das Speichern im Appdata Ordner?
Da wäre wohl dann zwingend ein Setup erforderlich, damit beim Entfernen kein Müll zurückbleibt. Die wenigsten hier und in einigen anderen coms nutzen jedoch gerne Setups... und Setups benötigen ja auch wieder Adminrechte :|
Die Datenleichen sind ja Absicht, so bleiben bei erneuter Installation alle Einstellungen erhalten. Installer entfernen diese Daten normallerweise auch nicht, nehmen ja auch kaum Platz weg, bei heutigen Festplatten.
Desweiteren legt MS ja auch grossen Wert darauf, das Du einen Installer mit MSI-Technik (die schrecklichsten überhaupt) nimmst, bzw. ohne eines solchen Installers werden viele Admins Deine
Programme auf Firmen-PCs nicht zulassen.

Gruß
Thomas

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 20:09
von Mokota
Ok, danke für die Infos... dann werd ich wohl einiges umschreiben müssen.

Mache es beim Speichern dann wohl am besten so, dass abgefragt wird ob GetEnvironmentVariable("MYDOCUMENTS") im Speicherpfad nach der Abfrage mit dem Requester vorhanden ist und andernfalls ne Fehlermeldung kommt.

Oder kann man auch über ne Variable überprüfen ob der Nutzer Adminrechte hat und dann auch das Speichern in anderen Ordnern zulassen?

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 20:27
von ts-soft
Mokota hat geschrieben:Ok, danke für die Infos... dann werd ich wohl einiges umschreiben müssen.

Mache es beim Speichern dann wohl am besten so, dass abgefragt wird ob GetEnvironmentVariable("MYDOCUMENTS") im Speicherpfad nach der Abfrage mit dem Requester vorhanden ist und andernfalls ne Fehlermeldung kommt.
Die Environmentvariable gibts aber so leider nicht :wink:

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure

Debug GetSpecialFolder(#CSIDL_PERSONAL)
ist der korrekte Pfad!
Mokota hat geschrieben: Oder kann man auch über ne Variable überprüfen ob der Nutzer Adminrechte hat und dann auch das Speichern in anderen Ordnern zulassen?
Prinzipiell schon:

Code: Alles auswählen

Debug IsUserAnAdmin_()
aber normallerweise sollte der User von alleine einen Pfad wählen wo das Speichern erlaubt ist,
wäre ja ziemlich komisch wenn er Windows, ProgramFiles oder ähnlich wählt.
Wer davon betroffen ist, bekommt es recht schnell mit, wo und wo nicht.

Gruß
Thomas

Re: Probleme Windows Vista und Window 7

Verfasst: 21.12.2009 15:56
von KatSeiko

Code: Alles auswählen

GetSpecialFolder(#CSIDL_DESKTOPDIRECTORY)        ;Liefert den Desktop für den Nutzer

GetSpecialFolder(#CSIDL_COMMON_DESKTOPDIRECTORY) ;Liefert den Desktop für alle User

GetSpecialFolder(#CSIDL_PROGRAMS)                ;Liefert das Startmenü für den Nutzer

GetSpecialFolder(#CSIDL_COMMON_PROGRAMS)         ;Liefert das Startmenü für alle User

GetSpecialFolder(#CSIDL_PROGRAM_FILES)           ;Liefert den Programm-Ordner.
                                                 ;ist unter 64bit-OS automatisch (x86), wenn mit 32bit kompiliert.

GetSpecialFolder(#CSIDL_PROGRAM_FILESX86)        ;Liefert unter x64-OS und -Programm das (x86)-Verzeichnis.

Re: Probleme Windows Vista und Window 7

Verfasst: 21.12.2009 20:08
von mk-soft
Speicher freigeben nicht vergessen (CoTaskMemFree)

Code: Alles auswählen

Procedure.s GetSpecialFolder(CSIDL.l)
  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)
  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      CoTaskMemFree_(*itemid)
      If Right(location, 1) <> "\" : location + "\" 
      EndIf
      ProcedureReturn location
    EndIf
  EndIf
EndProcedure
FF :wink:

Re: Probleme Windows Vista und Window 7

Verfasst: 21.12.2009 20:25
von ts-soft
mk-soft hat geschrieben:Speicher freigeben nicht vergessen (CoTaskMemFree)
Ist mir nach einem Plattencrash wieder eine alte Version in meine Templates gerutscht Bild

Muß die alle mal Generalüberholen, aber bin zu Faul Bild

Gruß
Thomas