Probleme Windows Vista und Windows 7

Anfängerfragen zum Programmieren mit PureBasic.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Re: Probleme Windows Vista und Window 7

Beitrag 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
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
Mokota
Beiträge: 60
Registriert: 26.04.2008 23:18
Kontaktdaten:

Re: Probleme Windows Vista und Window 7

Beitrag 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 :|
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme Windows Vista und Window 7

Beitrag 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
Benutzeravatar
Mokota
Beiträge: 60
Registriert: 26.04.2008 23:18
Kontaktdaten:

Re: Probleme Windows Vista und Window 7

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme Windows Vista und Window 7

Beitrag 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
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Re: Probleme Windows Vista und Window 7

Beitrag 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.
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Probleme Windows Vista und Window 7

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme Windows Vista und Window 7

Beitrag 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
Antworten