Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Zugriffrechte auf Datei erstellen vergeben.
wwwowtschik
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

Zugriffrechte auf Datei erstellen vergeben.

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Lars Schmitt
myCSharp.de - Experte

Avatar #avatar-2240.jpg


Dabei seit:
Beiträge: 2335
Herkunft: Witten

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
wwwowtschik
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10080

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
wwwowtschik
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1548
Herkunft: Berlin, Germany

beantworten | zitieren | melden

(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,
  2. LocalApplicationData, für benutzerspezifische Daten, die ausschließlich auf diesem Rechner gespeichert werden sowie
  3. CommonApplicationData, für Daten, die allen Benutzern zur Verfügung stehen sollen.

  4. 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.
private Nachricht | Beiträge des Benutzers
wwwowtschik
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Zitat
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,
  2. LocalApplicationData, für benutzerspezifische Daten, die ausschließlich auf diesem Rechner gespeichert werden sowie
  3. CommonApplicationData, für Daten, die allen Benutzern zur Verfügung stehen sollen.

  4. 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.
private Nachricht | Beiträge des Benutzers