Zugriffsrechte Programm

  • VB.NET
  • .NET (FX) 4.0

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    Zugriffsrechte Programm

    Moin zusammen,

    folgendes Problem:
    Mein Programm greift auf einen Ordnerpfad zu \\SERVER\ORDNER
    Es hat eine Oberfläche und übt diverse Aktionen aus (Dateien verschieben, einfügen, umbenennen usw.)

    Jetzt muss ich derzeit dem Benutzer Zugriffsrechte auf den Ordner geben. Das ist Mist. Es ist nirgendwo ein Pfad zu sehen, jedoch kann ein Nutzer, wenn gewollt und etwas Ahnung,
    den Pfad trotzdem finden und Logs die mein Programm schreibt umgehen.
    Kann ich meinem VB Programm sagen dass es diverse Zuatzrechte nutzt, welche der Nutzer selbst auf diesen Pfad nicht hat?

    Mein Gedanke:
    AD-User VB.NET > Ändern Rechte auf den Ordner
    den AD-User als Zusatzberechtigung mit im Programm angeben...

    Geht sowas?
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    @razzzer530i Was macht Dein Programm, was man im Explorer nicht machen kann?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Pfade verstecken, Logs schreiben, Auftragsbasierte Details auswerten, Datenbankenänderungen.
    Mein Programm ist eine vollständige Archivlösung, die seit ca. 3 Monaten aktiv und zuverlässig läuft. Diesen Bereich möchte ich jedoch noch optimieren.
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Ich habe in einem meiner Programme etwas Ähnliches, nur verwendet mein Programm hierzu nicht die SMB Freigabe, sondern läd Dateien per SFTP/FTP auf den Server (im Netzwerk) hoch.
    Dazu werden die Zugangsdaten dem Login des Benutzers als Eigenschaft angehängt, welche er selber aber weder ändern noch einsehen kann.
    Das Programm läd dann die Dateien hoch, kann Bezeichnungen ändern etc.

    Logs werden in eine Datenbank geschrieben, nicht (wie ich bei dir vermute) in eine Textdatei auf der Freigabe? Genauere Angaben bitte.
    Für Datenbankeinträge braucht man ja auch keine SMB Freigabe, das passiert ja über die Datenbankabfrage (MS SQL, MySQL etc.)
    "Pfade verstecken", wozu? Damit der User bestimmte Dateien nicht sehen kann? Dann gehören diese Dateien auf eine Freigabe, auf der der Benutzer keine Zugriffsrechte hat. Verstecken ist da absolut falsch, wenn er den Ordner kopiert und auf dem Desktop einfügt, werden die versteckten Daten auch kopiert. Oder er ändert einfach die Eigenschaften des übergelegenen Ordners und macht unsichtbare Dateien sichtbar und Peng, deine versteckten Pfade sind sichtbar.
    Ich würde einen Sammel-User für alle einrichten, der Lese- und Schreibrechte hat und für alle anderen User den Zugriff sperren.

    Dann Netzwerkzugriff mit Credentials des Sammelusers verbinden.

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("net.exe use * " & Netzlaufwerkspfad & " /user:" & Sammelusername & " " & Sammeluserpassword)



    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yanbel“ ()

    Besten Dank Leute. Das ist die Lösung.
    @BlueLagoonX der FTP Upload ist aufgrund von tausenden Zugriffen im Live Modus leider nicht möglich.
    Ich benötige zur stabilen Verarbeitung einen direkten Netzzugriff.
    Die Lösung von @Yanbel ist ideal.
    Baue das Ganze mal zum Test ein.
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Das wird wahrscheinlich auch nicht zufriedenstellend funktionieren. Da der Client ab dem Zeitpunkt wo net use verwendet wurde wieder vollständigen Zugriff auf diese Freigabe besitzt. Dann kam man sich das auch sparen.

    Zufriedenstellend wird wohl nur eine Client/Server Lösung sein. Die Operationen laufen dann alle über den Server, welcher wiederum unter einem anderen Benutzer läuft als der Client. Die Zugriffsrechte steuert dann der Server. Der Client kommuniziert über eine Schnittstelle mit dem Server. Z.b SignalR
    net use bindet das Netzlaufwerk immer ein, sofern der Zugriff überhaupt funktioniert. Nur eben nicht persistent, also nicht dauerhaft. Das bedeutet, beim nächsten Neustart oder Neu-Anmelden am Windows-Account ist das Laufwerksmapping solange nicht vorhanden, bis das Programm das Mapping wieder herstellt.
    @Dksksm Danke, ich habe nochmal nachgeschaut, da ich dachte das wäre in meinem Powershell Script anders, aber du hast Recht. Im Script entferne ich das Netzlaufwerk explizit nach Beenden der Arbeit.

    Also nach dem Schreibvorgang die Verbindung wieder abbrechen.

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("net.exe use " & Netzlaufwerkspfad & " /delete /yes"


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.