Seite 1 von 2

Probleme Windows Vista und Windows 7

Verfasst: 19.12.2009 14:01
von amiga123
Hallo

Also ich habe folgendes Problem. Ich habe hier ein Programm geschrieben das unter Windows 2000 und XP fehlerfrei läuft.(Es liest und ändert eine txt.Datei)
Jetzt habe ich das Programm auf einem Windows Vista und Window7 Rechner installiert und siehe da es läuft zwar, ändert aber die Datei nicht mehr.
Habe nun in den Eigenschaften alles Freigegeben damit das Programm vollen Schreibzugriff hat, bringt aber nicht es kann immer noch keine Datei neu schreiben.
Im XP Kompatibilitäs Modus läuft alles wie gewünscht, ebenso wenn ich das Programm in einem seperaten Ordner installiere. (z.B. C:test/)
Weiß jemand woran das liegen könnte.

Gruß Amiga

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 14:08
von TomS
amiga123 hat geschrieben:alles wie gewünscht, ebenso wenn ich das Programm in einem seperaten Ordner installiere. (z.B. C:test/)
Weiß jemand woran das liegen könnte.
Am Pfad?

C:\Programme\Irgendwas\deinProgramm.exe
versucht C:\Programme\Irgendwas\deineDatei.txt zu schreiben?
Geht nicht ohne Admin-Rechte afaik.

Config-Dateien und so Zeug besser in %APPDATA%\ProgrammName\Datei.ext speichern.

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 14:14
von ts-soft
Das ändern der Sicherheitseinstellungen sollte man eigentlich nicht machen, besser das Programm umschreiben.

Bei den Änderungen haste wohl nen Fehler gemacht.

Ordner Kontextmenü Eigenschaften auswählen, den Reiter Sicherheit auswählen,
bearbeiten auswählen, Benutzer (PC-Name\Benutzer) auswählen und bei Zulassen Vollzugriff auswählen.

Das ganze bringt Dir aber garnichts, wenn Du Deine Programme weitergeben willst. Also ändere besser
Dein Programm.

Gruß
Thomas

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 14:32
von amiga123
TomS hat geschrieben:
amiga123 hat geschrieben:alles wie gewünscht, ebenso wenn ich das Programm in einem seperaten Ordner installiere. (z.B. C:test/)
Weiß jemand woran das liegen könnte.
Am Pfad?

C:\Programme\Irgendwas\deinProgramm.exe
versucht C:\Programme\Irgendwas\deineDatei.txt zu schreiben?
Geht nicht ohne Admin-Rechte afaik.

Config-Dateien und so Zeug besser in %APPDATA%\ProgrammName\Datei.ext speichern.
Hi
Was ist %APPDATA%\ProgrammName\Datei.ext ?? Tut mir leid das ich das nicht weiß. :oops:

gruß Amiga

Ups. Habe gerade was gefunden zu APPDATA.

Code: Alles auswählen

SetCurrentDirectory("%APPDATA%")
appdata.s=GetCurrentDirectory()

Debug appdata

ExamineDirectory(0, appdata, "")
; Verzeichnis auslesen
nur wenn ich das Aufrufe kommt eben nur der Pfad raus wie bei GetPathPart(DPfad$)
oder läuft das nur unter Vista/7

???

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 14:53
von TomS
%APPDATA% ist eine Umgebungsvariable.
Unter XP ist das z.B. C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\
Unter Vista glaube ich (nicht fressen, wenn's falsch ist) C:\Users\Benutzername\Anwendungsdaten\

Dort werden eben Dateien von den Programmen abgelegt. Z.B. das Benutzer-Profil von Firefox, oder die E-Mails von Thunderbird, oder die Spielstände von einem Spiel.

In deinem Code steht wahrscheinlich folgendes:

Code: Alles auswählen

OpenFile(FileFandle,"datei.txt")
Dort schreibt du einfach:

Code: Alles auswählen

OpenFile(FileFandle,"%APPDATA%\name_von_deinem_programm\datei.txt")

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 15:02
von ts-soft
TomS hat geschrieben:

Code: Alles auswählen

OpenFile(FileFandle,"%APPDATA%\name_von_deinem_programm\datei.txt")
Das funktioniert? Kann ich mir nicht vorstellen, das der String expandiert wird, habs aber nicht getestet.

@Amiga
Du setzt den Pfad folgendermassen zusammen:

Code: Alles auswählen

Define.s MyOrganisation = "AmigaSoft"
Define.s ProgramName = "Mein tolles Programm"
Define.s FileToSave = "wichtig.txt"
Define.s Path
Path = GetEnvironmentVariable("APPDATA") + "\"
Debug Path
Path + MyOrganisation + "\"
Debug Path
Path + ProgramName + "\"
Debug Path
Path + FileToSave
Debug Path
Die ersten 3 Variablen sind natürlich anzupassen. An diesem Ort kannste dann problemlos Dateien erstellen, bearbeiten usw., auf allen Windows-Systemen, Userrechte genügen.

Das Deine Ursprüngliche Version unter W2K und XP funktionierte, lag nur an den Rechten, bei eingeschränkten Usern versagt es genauso wie unter Vista und 7. "Normale" Programme sollten also
immer in "APPDATA" oder "MYDOCUMENTS" speichern, alles andere ist schlichtweg falsch.

Gruß
Thomas

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 15:03
von amiga123
TomS hat geschrieben:%APPDATA% ist eine Umgebungsvariable.
Unter XP ist das z.B. C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\
Unter Vista glaube ich (nicht fressen, wenn's falsch ist) C:\Users\Benutzername\Anwendungsdaten\

Dort werden eben Dateien von den Programmen abgelegt. Z.B. das Benutzer-Profil von Firefox, oder die E-Mails von Thunderbird, oder die Spielstände von einem Spiel.

In deinem Code steht wahrscheinlich folgendes:

Code: Alles auswählen

OpenFile(FileFandle,"datei.txt")
Dort schreibt du einfach:

Code: Alles auswählen

OpenFile(FileFandle,"%APPDATA%\name_von_deinem_programm\datei.txt")
Also das habe ich jetzt gerade Probiert.
Es kommt aber nicht der Ordner raus sondern wenn ich mir den Pfad anzeigen lassen kommt das raus.

Code: Alles auswählen

OpenFile(FileFandle,"%APPDATA%\Sundisp\Sundisp.cfg")
Gruß Amiga

der Ordner C:\Dokumente und Einstellungen\Herbert\Anwendungsdaten\Sundisp bleibt leer

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 15:06
von amiga123
ts-soft hat geschrieben:
TomS hat geschrieben:

Code: Alles auswählen

OpenFile(FileFandle,"%APPDATA%\name_von_deinem_programm\datei.txt")
Das funktioniert? Kann ich mir nicht vorstellen, das der String expandiert wird, habs aber nicht getestet.

@Amiga
Du setzt den Pfad folgendermassen zusammen:

Code: Alles auswählen

Define.s MyOrganisation = "AmigaSoft"
Define.s ProgramName = "Mein tolles Programm"
Define.s FileToSave = "wichtig.txt"
Define.s Path
Path = GetEnvironmentVariable("APPDATA") + "\"
Debug Path
Path + MyOrganisation + "\"
Debug Path
Path + ProgramName + "\"
Debug Path
Path + FileToSave
Debug Path
Die ersten 3 Variablen sind natürlich anzupassen. An diesem Ort kannste dann problemlos Dateien erstellen, bearbeiten usw., auf allen Windows-Systemen, Userrechte genügen.

Das Deine Ursprüngliche Version unter W2K und XP funktionierte, lag nur an den Rechten, bei eingeschränkten Usern versagt es genauso wie unter Vista und 7. "Normale" Programme sollten also
immer in "APPDATA" oder "MYDOCUMENTS" speichern, alles andere ist schlichtweg falsch.

Gruß
Thomas

Danke Thomas
Das ist genau das was ich suche. Dann werde ich mal mein Programm umschreiben damit es auf Vista und 7 läuft.

Gruß Amiga

Re: Probleme Windows Vista und Window 7

Verfasst: 19.12.2009 15:28
von TomS
ts-soft hat geschrieben:Das funktioniert? Kann ich mir nicht vorstellen, das der String expandiert wird, habs aber nicht getestet.
Hast Recht /:->
Dachte, dass es unter Windows automatisch geht, wie im Explorer auch. Hab mich getäuscht...

Re: Probleme Windows Vista und Window 7

Verfasst: 20.12.2009 14:26
von Andesdaf
> Unter Vista glaube ich (nicht fressen, wenn's falsch ist) C:\Users\Benutzername\Anwendungsdaten\
C:\Users\Benutzername\AppData\ :wink: