Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi darf auf C nichts erstellen (https://www.delphipraxis.net/132567-delphi-darf-auf-c-nichts-erstellen.html)

SyntaxXx 15. Apr 2009 08:41


Delphi darf auf C nichts erstellen
 
Hallo, und zwar bin ich gerade dabei, ei kleines Programm zu schriben.
Jetzt stoße ich af das Problem, das delphi keine Dateien bzw. .ini auf C: anlegen darf.

Jetzt wollte ich fragen, wie ich das nun ändern kann?

Ich denke mal die antwort ist leicht, aber meine Google treffer helfen mir nicht weiter.

Bernhard Geyer 15. Apr 2009 08:47

Re: Delphi darf auf C nichts erstellen
 
Glaskugel auspack: Du hast Vista und aktives UAC. Und dort darf nunmal kein normales Programm was direkt unter C:\ ablegegen.

fkerber 15. Apr 2009 08:47

Re: Delphi darf auf C nichts erstellen
 
Hi!

Das ist aber kein Delphi-Problem, sondern da scheint es ein Rechte-Problem bei dir zu geben.
Also es kann wohl kein Programm was auf C: erstellen...


Ciao, Frederic

SyntaxXx 15. Apr 2009 08:52

Re: Delphi darf auf C nichts erstellen
 
Kennt ihr denn eine schlaue möglichkeit um siche rzu gehen, das ein Pfad auch exestiert?
ich meine, es gibt ja durch aus leute, die nur eine Partition haben.
Und wie macht man das bei denen, den Daten auf die C estplatte erstellt werden?

ich könnte das zwar auf D erstellen, doch sobald jemand keine D Partition hat, wird ein Fehler auftauchen.

Wie mach eich das den jetzt am blödsten?

Luckie 15. Apr 2009 08:53

Re: Delphi darf auf C nichts erstellen
 
Warum willst du deine Ini-Datei im Root von C: ablegen? Damit niemand weiß zu welchem Programm sie gehört? Damit sich die Benutzer deies Programms ihr Einstellungen gegenseitig überschreiben?

Wie du das machst? In dem du wie alle anderen auch deine Konfigurationsdatei da erstellst, wo sie hinmgehört, ins Benutzerverzeichnis des Benutzers. Wie du den Pfad rausfindest und alles weitere solltest du über die suchfunktion des Forum finden können.

fkerber 15. Apr 2009 08:54

Re: Delphi darf auf C nichts erstellen
 
Hi!

Was genau willst du denn machen?

Ein Programm, das mir einfach auf C: was erstellt, würde bei mir sofort wieder von der Platte fliegen...


Ciao, Frederic

Jens Hartmann 15. Apr 2009 08:57

Re: Delphi darf auf C nichts erstellen
 
Adminrechte, nur das macht kein Sinn.

Zitat:

Zitat von SyntaxXx
ich könnte das zwar auf D erstellen, doch sobald jemand keine D Partition hat, wird ein Fehler auftauchen.

Aber was bitte hat das mit den Laufwerken zu tun.
Was willst Du den und wie speichern. Gib mal ein Paar Info´s

Ini.Dateien gehören ins Anwendungsverzeichnis oder so. Und ansonsten, solltest du dem User ja irgendwie die Möglichkeit geben einen Speicherort zu wählen.

Gruß Jens

SyntaxXx 15. Apr 2009 08:59

Re: Delphi darf auf C nichts erstellen
 
Nein^^

ich bin dabei ein Passwort saver zu machen.
Und die PWs sollen eben in einer .ini gespeichert werden.
Aber so wie ich das jetzt verstanden hab, dürfen nur keine dateien im Pfad C:\ erstellt werden.

C:\User würde also gehen?

Jens Hartmann 15. Apr 2009 09:02

Re: Delphi darf auf C nichts erstellen
 
Nein, Du musst diese in Datein ins Anwendungsverzeichnis speicher.

Wenn User Abhängig in USER und ansonsten in ALLUSERS.

Schau die mal folgende Funktion an, damit kannst Du diesen Pfad ermitteln und anschließend nutzen.

Delphi-Quellcode:
{Speicherpfad ermitteln um Speicherziel der User Einstellungen festzulegen}
function GetSpecialFolder (aFolder: Integer): String;
var
  pIdL: PItemIDList;
  Path: Array [0..Max_Path] of Char;
  Allocator: IMalloc;
begin
  // ItemIdList für den Ordner holen
  SHGetSpecialFolderLocation (0, aFolder, pIdL);

  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList (pIDL, Path);

  // Speicher wieder freigeben
  if Succeeded (SHGetMalloc (Allocator)) then
    begin
      Allocator.Free (pIdL);
      {$IFDEF VER100}
      Allocator.Release;
      {$ENDIF}
    end;
  Speicherort := Path;
  Result := Path;
end;

PS: Denk daran, das du eine INI-Datei ja lesen kannst. Und auch verschlüsseln ist nicht unbedingt sicher.

Gruß Jens

Angel4585 15. Apr 2009 09:02

Re: Delphi darf auf C nichts erstellen
 
Also soweit ich weis geht es unter C:\Program Files\ nicht, wies in anderen Ordnern aussieht weis ich jetzt nicht.
Erstell doch aus dem programm den Ordner und schau im Explorer was für Rechte der hat?

Luckie 15. Apr 2009 09:04

Re: Delphi darf auf C nichts erstellen
 
Zitat:

Zitat von SyntaxXx
C:\User würde also gehen?

Wenn dann C:\User\<Benutzername>\Anwnedungsdaten\<DeinProgra mmname>\Ini-Datei

Aber bitte nicht hardcoden. Auf meinem System gibt es diesen Pfad nämlich nicht.

fkerber 15. Apr 2009 09:04

Re: Delphi darf auf C nichts erstellen
 
Hi!

Anwendungsverzeichnis ist vllt. ein etwas missverständliches Wort, aber ich denke du meinst das richtige.
Also nicht unter C:\Programme\etc

Ich empfehle die Lektüre des folgenden Artikels:
http://www.michael-puff.de/Artikel/HOMEDIR.shtml



Ciao, Frederic

Luckie 15. Apr 2009 09:09

Re: Delphi darf auf C nichts erstellen
 
Zitat:

Zitat von Jens Hartmann
Schau die mal folgende Funktion an, damit kannst Du diesen Pfad ermitteln und anschließend nutzen.

Delphi-Quellcode:
{Speicherpfad ermitteln um Speicherziel der User Einstellungen festzulegen}
function GetSpecialFolder (aFolder: Integer): String;
var
  pIdL: PItemIDList;
  Path: Array [0..Max_Path] of Char;
  Allocator: IMalloc;
begin
  // ItemIdList für den Ordner holen
  SHGetSpecialFolderLocation (0, aFolder, pIdL);

  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList (pIDL, Path);

  // Speicher wieder freigeben
  if Succeeded (SHGetMalloc (Allocator)) then
    begin
      Allocator.Free (pIdL);
      {$IFDEF VER100}
      Allocator.Release;
      {$ENDIF}
    end;
  Speicherort := Path;
  Result := Path;
end;

Wenn du ihm jetzt noch sagst mit welcher CSIDL er die Funktion aufrufen muss. ;)

Den Pfad für die benutzerspezifischen Anwendungsdaten bekommt man mit der CSIDL CSIDL_APPDATA. In dem Verzeichnis legt man ein Unterverzeichnis an, das so heißt wie das Programm und dort hinein kommt die Ini-Datei.

Jens Hartmann 15. Apr 2009 09:13

Re: Delphi darf auf C nichts erstellen
 
Ich kann Die auch noch folgendes Empfehlen...

Anwendungsdaten

oder...

Ich hatte auch mal so ein Problem

[EDIT] Sorry, so wird es aufgerufen

Delphi-Quellcode:
  GetSpecialFolder(CSIDL_COMMON_APPDATA);
Gruß Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz