Laden...

Zugriffrechte auf Datei erstellen vergeben.

Erstellt von wwwowtschik vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.898 Views
W
wwwowtschik Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren
Zugriffrechte auf Datei erstellen vergeben.

Hallo,

C#

mein Programm sollte in der Lage sein, nach der Installation auf einem Client (Windows) eine Datei zu erstellen und sie auch ändern können.
Bei mir lokal auf dem PC funktioniert alles ohne Probleme. Wenn ich aber es auf einem anderen Rechner installiere, bekomme ich eine Fehlermeldung "Zugriff auf Verzeichniss ...... verweigert!" und die Datei wird nicht erstellt.

Muss ich irgendwie in meinem Programm Zugriffsrechte für diese Datei vergeben?
Falls ja wie mache ich das?

Vielen Dank im Voraus.

2.223 Beiträge seit 2005
vor 16 Jahren

Hallo wwwowtschik,

ich bräuchte noch ein paar mehr infos

zb
Wo soll die datei angelegt werden (pfad)
welche berechtigung hat dein programm? (die des users der es ausführt haha)
ok darf der user dort schreiben ?
welches OS
.
.
.
.
mfg

W
wwwowtschik Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Original von blackcoin
Hallo wwwowtschik,

ich bräuchte noch ein paar mehr infos

zb
Wo soll die datei angelegt werden (pfad)
welche berechtigung hat dein programm? (die des users der es ausführt haha)
ok darf der user dort schreiben ?
welches OS
.
.
.
.
mfg

hi, ok ich habe es jetzt nochmal getestet, das Problem tritt nur auf Windows Vista. Auf Windows XP läuft es normal. Aber was soll ich jetzt mit dem Problem auf Vista machen? Es ist eine binäre Datei, die wird erstellt und später werden dort Benutzernamen und Passwörter gespeichert und gelesen.

F
10.010 Beiträge seit 2004
vor 16 Jahren

Dann wirst Du wohl das Falsch gemacht haben, was 99% aller Entwickler tun, ins Programmverzeichnis zu schreiben.

Gewöhn dir einfach an, an die richtige stelle zu schreiben.
Entweder in den Isolated Storage oder ins Roaming Verzeichnis des Anwenders.

W
wwwowtschik Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Original von FZelle
Dann wirst Du wohl das Falsch gemacht haben, was 99% aller Entwickler tun, ins Programmverzeichnis zu schreiben.

Gewöhn dir einfach an, an die richtige stelle zu schreiben.
Entweder in den Isolated Storage oder ins Roaming Verzeichnis des Anwenders.

Hallo Danke für dein Tipp.
Könntest du vielleicht etwas mehr darüber schreiben. Habe noch nie davon gehört.

B
1.529 Beiträge seit 2006
vor 16 Jahren

(1)
Environment.GetFolderPath() liefert dir den Pfad eines der speziellen Windows-Verzeichnisse. Environment.SpecialFolder sagt obiger Methode, elchen Ordner du brauchst. Für dich sind drei Möglichkeiten interessant: 1.Standard: ApplicationData für benutzerspezifische Daten, die bei einem auf einem Server gespeicherten Profil (beispielsweise Active Directory) auf jedem Rechner für den Benutzer zur Verfügung stehen sollen, 1.LocalApplicationData, für benutzerspezifische Daten, die ausschließlich auf diesem Rechner gespeichert werden sowie 1.CommonApplicationData, für Daten, die allen Benutzern zur Verfügung stehen sollen.

Standard ist es, in einem der obigen Ordner einen Unterordner mit dem Herstellernamen und darunter einen weiteren mit dem Programmnamen zu erstellen. In diesen werden dann die eigentlichen Dateien gespeichert.

Also etwa:

Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ), @"wwwowtschik\myProgram" );

Natürlich muss das Verzeichnis vor der ersten Verwendung erstellt werden, dies kann man jedoch auch in einem (eventuellen) Setup-Projekt erledigen.

(2)
Isolated Storage ist ein Mechanismus, der einen von der Wahl des richtigen Ordners befreit. Das ganze funktioniert ähnlich wie ein Tresor.
Man gibt einfach beim Benutzen an, wie die Daten isoliert werden sollen (nur diese Anwendung, nur diese Assembly, nur diese Domäne, nur dieser Rechner, niemand, nur dieser Benutzer, Active-Directory-weit).
Existiert bereits ein Tresor mit den genannten Eigenschaften, kann man auf alle Dateien in ihm zugreifen, ansonsten erhält man einen neuen leeren Tresor.
Alles was man braucht, findet sich im Namespace System.IO.IsolatedStorage.

Es ist wichtig darauf hinzuweisen, dass die Daten nicht automatisch verschlüsselt werden.

W
wwwowtschik Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Original von Borg
(1)
Environment.GetFolderPath() liefert dir den Pfad eines der speziellen Windows-Verzeichnisse. Environment.SpecialFolder sagt obiger Methode, elchen Ordner du brauchst. Für dich sind drei Möglichkeiten interessant: 1.Standard: ApplicationData für benutzerspezifische Daten, die bei einem auf einem Server gespeicherten Profil (beispielsweise Active Directory) auf jedem Rechner für den Benutzer zur Verfügung stehen sollen, 1.LocalApplicationData, für benutzerspezifische Daten, die ausschließlich auf diesem Rechner gespeichert werden sowie 1.CommonApplicationData, für Daten, die allen Benutzern zur Verfügung stehen sollen.

Standard ist es, in einem der obigen Ordner einen Unterordner mit dem Herstellernamen und darunter einen weiteren mit dem Programmnamen zu erstellen. In diesen werden dann die eigentlichen Dateien gespeichert.

Also etwa:

Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ), @"wwwowtschik\myProgram" );  

Natürlich muss das Verzeichnis vor der ersten Verwendung erstellt werden, dies kann man jedoch auch in einem (eventuellen) Setup-Projekt erledigen.

(2)
Isolated Storage ist ein Mechanismus, der einen von der Wahl des richtigen Ordners befreit. Das ganze funktioniert ähnlich wie ein Tresor.
Man gibt einfach beim Benutzen an, wie die Daten isoliert werden sollen (nur diese Anwendung, nur diese Assembly, nur diese Domäne, nur dieser Rechner, niemand, nur dieser Benutzer, Active-Directory-weit).
Existiert bereits ein Tresor mit den genannten Eigenschaften, kann man auf alle Dateien in ihm zugreifen, ansonsten erhält man einen neuen leeren Tresor.
Alles was man braucht, findet sich im Namespace System.IO.IsolatedStorage.

Es ist wichtig darauf hinzuweisen, dass die Daten nicht automatisch verschlüsselt werden.

Vielen Dank für die Hilfe! Ich werde es versuchen.