AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Speichern von Dateien - Windows Vista
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern von Dateien - Windows Vista

Ein Thema von f4k3 · begonnen am 2. Mai 2009 · letzter Beitrag vom 2. Mai 2009
Antwort Antwort
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:18
Moin Moin liebe DPler

Schreib momentan ein Proggi für meine Abschlussarbeit und häng an einem Punkt
und zwar wenn ich mein Programm auf Windows Vista ausführe (wird auch auf Vista gecoded),
wird meine "Settings"-Datei vom Typ TextFile nicht gespeichert.

Und zwar hab ich es getestet wenn meine Exe direkt im C: Verzeichnis liegt ... also C:\CRMfSD.exe ... und wenns in meinen eigenen Dateien unter Dokumente liegt.

Direkt auf C: :
Exception tritt auf, Dateizugriff verweigert.

Eigene Dateien\Dokumente:
Meine Meldung dass Datei erfolgreich gespeichert wurde, wird angezeigt (Exception Handling) aber die Datei befindet sich nicht
im Verzeichnis.

Die Datei wird in einem Unterordner "Einstellungen" (gleicher Pfad wie Exe) gespeichert.

Gibt es eine Möglichkeit für derlei Aktionen "Rechte" anzufordern.

Also ich denk mir zumindest dass man die UAC ja irgendwie "anpingen" kann ... weil momentan reagiert die UAC gar nicht auf meine
Zugriffe.

Vielen Dank,
Euer F4k3
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:39
Tja, auf C:\ hat man halt "normal" keine Schreibrechte mehr

Beste Lösung: speicher die Datei ein einem Verzeichnis, wo das Programm die nötigen Rechte dazu schon hat ... umsonst wurden die Rechte ja nicht eingeschränkt.

Und nur die Rechte zum umgehen, weil man keine Lust hat sich ein passendes Verzeichnis zu suchen ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.341 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:46
Hier findest du dazu etwas von mir inkl. Demo:
http://www.delphi-library.de/viewtopic.php?p=548600

Ein Programm, das sich Adminrechte holt um Einstellungen z.B. zu speichern, würde bei mir sofort auf den Müll fliegen (und ich hoffe doch beim Prüfer ebenso)...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:53
Zitat von himitsu:
Tja, auf C:\ hat man halt "normal" keine Schreibrechte mehr

Beste Lösung: speicher die Datei ein einem Verzeichnis, wo das Programm die nötigen Rechte dazu schon hat ... umsonst wurden die Rechte ja nicht eingeschränkt.

Und nur die Rechte zum umgehen, weil man keine Lust hat sich ein passendes Verzeichnis zu suchen ...
mhm ...
naja ... sollte eigentlich ne Quick nd Dirty Lösung werden, da ich nicht glaube dass das Prüfungskomitee sonderlich wert
drauf legt, es sollte ja nur für mich sein, dass ich eine Automation drin hab um zu meinen Datenbanken zu connecten ohne jedesmal
die Einstellungen eingeben zu müssen.

naja ... werd mir ne andere Lösung überlegen.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:54
Zitat von himitsu:
Tja, auf C:\ hat man halt "normal" keine Schreibrechte mehr

Beste Lösung: speicher die Datei ein einem Verzeichnis, wo das Programm die nötigen Rechte dazu schon hat ... umsonst wurden die Rechte ja nicht eingeschränkt.

Und nur die Rechte zum umgehen, weil man keine Lust hat sich ein passendes Verzeichnis zu suchen ...
mhm ...
naja ... sollte eigentlich ne Quick nd Dirty Lösung werden, da ich nicht glaube dass das Prüfungskomitee sonderlich wert
drauf legt, es sollte ja nur für mich sein, dass ich eine Automation drin hab um zu meinen Datenbanken zu connecten ohne jedesmal
die Einstellungen eingeben zu müssen.

naja ... werd mir ne andere Lösung überlegen.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 14:55
Zitat von jaenicke:
Hier findest du dazu etwas von mir inkl. Demo:
http://www.delphi-library.de/viewtopic.php?p=548600

Ein Programm, das sich Adminrechte holt um Einstellungen z.B. zu speichern, würde bei mir sofort auf den Müll fliegen (und ich hoffe doch beim Prüfer ebenso)...
mhm ... naja ... find ich besser als wenn jemand die Registry vollmüllt.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 15:13
Speicher deine Daten und Dateien da hin wo sie auch hin gehören.

Sichwort Hier im Forum suchenAppData bzw.: In .ini ohne Adminrechte speichern?

Ist also recht einfach:

Delphi-Quellcode:
unit Dingsbums;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, StdCtrls;

type
  TFormX = class(TForm)
    ButtonX: TButton;
    LabelX: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure SaveIniFile;
  public
    { Public-Deklarationen }
  end;

var
  FormX: TFormX;

implementation

{$R *.dfm}

uses
  ShellAPi,
  ShlObj;

const
  strAppDataDir = '\tP.Software\My Testprogramm\';
  strIniFName = 'TestIniFile.ini';

function GetShellFolder(CSIDL: integer): string;
var
  pidl: PItemIdList;
  FolderPath: string;
  SystemFolder: Integer;
begin
  FolderPath := '';
  SystemFolder := CSIDL;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
  begin
    SetLength(FolderPath, MAX_PATH);
    SHGetPathFromIDList(pidl, PChar(FolderPath));
    SetLength(FolderPath, lstrlen(PChar(FolderPath)));
  end;
  Result := FolderPath;
end;

procedure TFormX.SaveIniFile;
var
  IniFile: TIniFile;
  AppDataDir: string;
begin
  AppDataDir := GetShellFolder(CSIDL_APPDATA) + strAppDataDir;

  if not DirectoryExists(AppDataDir) then
  begin
    if not ForceDirectories(AppDataDir) then
    begin
      ShowMessage('Fehler beim erstellen des Ordners: +'#13'"' + AppDataDir + '"');
      exit;
    end;
  end;

  LabelX.Caption := format('"%s"', [AppDataDir + strIniFName]);

  IniFile := TIniFile.Create(AppDataDir + strIniFName);
  try
    IniFile.WriteString('MyText', 'Infotext', 'Hallo');
  finally
    IniFile.Free;
  end;
end;

procedure TFormX.Button1Click(Sender: TObject);
begin
  SaveIniFile;
end;

end.

// Edit: also ebend war noch kein Beitrag ausser dem ersten da... ich werd wohl alt
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Speichern von Dateien - Windows Vista

  Alt 2. Mai 2009, 15:28
sollte man nicht noch die pidl wieder freigeben? (mit CoTaskMemFree)
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
  pidl: PItemIdList;
  SystemFolder: Integer;
begin
  SystemFolder := CSIDL;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
  begin
    SetLength(Result, MAX_PATH);
    SHGetPathFromIDList(pidl, PChar(Result));
    SetLength(Result, lstrlen(PChar(Result)));
    CoTaskMemFree(pidl);
  end else Result := '';
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 12:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz