Laden...

Eigene User Berechtigung für die Anwendung

Erstellt von ck82 vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.699 Views
C
ck82 Themenstarter:in
34 Beiträge seit 2015
vor 8 Jahren
Eigene User Berechtigung für die Anwendung

Hallo nochmal,

leider komme ich trotz suchen nicht zum Stein der Weisen und hoffe auf eure Unterstützung.

Mein Problem ist ich habe eine Anwendung welche eigene Nutzerberechtigung erhalten soll.
Ich möchte eine Netzwerkfreigabe mit einem eigenen von mir kreierten User ausstatten.
Z.B. Im Active Directory User AnwendungX mit Lese und Schreibzugriff auf den Ordner im Netzwerk.

Von den Client aus möchte ich nun meine Anwendung starten.

Der Client selbst soll aber keinen Zugriff auf den Ordner erhalten (keine Lese oder Schreibrechte).

Gibt es eine Möglichkeit dem Programm eigene (zusätzliche) User-Berechtigung mitzugeben, damit dieser auf den Ordner und den Inhalt zugreifen kann?

Würde mich über Ihre Hilfe sehr freuen.

Gruß

ck

T
314 Beiträge seit 2013
vor 8 Jahren

Wie soll der User ohne Berechtigung auf einen Ordner zugreifen!?

C
ck82 Themenstarter:in
34 Beiträge seit 2015
vor 8 Jahren

Der Client greift nur auf seine Anwendung zu ohne Berechtigung für den Ordner.

Die Anwendung wiederum soll auf den Ordner mit höherer (nicht Admin) Berechtigung zugreifen.

Bin grade am prüfen von so was - der Kniff fehlt mir aber noch:

http://stackoverflow.com/questions/295538/how-to-provide-user-name-and-password-when-connecting-to-a-network-share

https://msdn.microsoft.com/en-us/library/w070t6ka.aspx

T
314 Beiträge seit 2013
vor 8 Jahren

Der Client greift nur auf seine Anwendung zu ohne Berechtigung für den Ordner.

Aber genau da liegt doch dein Problem.

Mach ne Webanwendung

C
ck82 Themenstarter:in
34 Beiträge seit 2015
vor 8 Jahren

Verstehe ich nicht?!?

Im Grunde möchte ich auf dem Host-System einen Ordner freigeben.

Dieser Ordner soll über Active-Directory einen neuen Benutzer erhalten.

Beispiel Benutzer AnwendungsBenutzer.

Der Client im Netzwerk meldet sich an seinem PC mit einfachem Benutzer an.
Dieser einfache Benutzer soll keine Lese- oder Schreibrechte auf dem Ordner erhalten.

Die Anwendung selbst ist bei dem einfachen Benutzer auf einem lokalen Laufwerk.
Wird mit vereinfachten Benutzerrechten gestartet werden, soll aber dann auf erweiterte Benutzerrechte wechseln.

Also sobald die Anwendung ausgeführt wird soll die Anwendung mit erweiterten Benutzerrechten (als AnwendungsBenutzer) mit dem Ordner kommunizieren (Lese/ und Schreibzugriff).

Der User selbst hat keinen Zugriff auf den Ordner aus seinem Explorer heraus.

Die Anwendung selbst kann aber auf die enthaltenen Dateien zugreifen?!?

Oder ist das nicht möglich???

C
ck82 Themenstarter:in
34 Beiträge seit 2015
vor 8 Jahren

Im Grunde könnte ich auch über die Manifest-Datei dem Programm Admin-Rechte einräumen aber irgendwie ist das mit Kanonen auf Spatzen geschossen???

http://stackoverflow.com/questions/3598824/how-to-force-my-c-sharp-winforms-program-run-as-administrator-on-any-computer

P
1.090 Beiträge seit 2011
vor 8 Jahren

Ich denke mal du willst die App als anderen User Starten. Der dann zugriff auf die Freigabe hat.

Schau mal hier (hab ich jetzt nur überflogen):
stackoverflow:Launch a process under another user's credentials

Sonst mal die google Ergebnisse durchgehen, die man mit "c# run application as another user" findet. 😉

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

T
314 Beiträge seit 2013
vor 8 Jahren

Dann musst Du in deinem Programm entsprechend die nötigen Anmeldeinformationen hinterlegen (oder von irgendwo Abrufen) und die nötigen Aufrufe impersonifizieren.

Klingt für mich aber eher so, als bräuchtest Du z.B. einen Webservice welcher mit dem "AnwendungsBenutzer" läuft und dem Client die gewünschten Informationen liefert.

C
ck82 Themenstarter:in
34 Beiträge seit 2015
vor 8 Jahren

Danke euch beiden für eure Hilfe.

Werde morgen weiter kämpfen und schauen ob ich das hinbekomme.

Den nachfolgenden Code werde ich morgen nochmal genauer prüfen.

Evtl. braucht mein Prog. einfach einen Starter (Consolenanwendung), welches das Prog startet und dann die Benutzereinstellung des Programms ändert.



 class Credentials
    {
        
        private static SecureString MakeSecureString(string text)
        {
            SecureString secure = new SecureString();
            foreach(char c in text)
            {
                secure.AppendChar(c);

            }
            return secure;
        }


        public static void RunAs(string path, string username, string password)
        {
            try
            {
                ProcessStartInfo myProcess = new ProcessStartInfo(path);
                myProcess.UserName = username;
                myProcess.Password = MakeSecureString(password);
                myProcess.WorkingDirectory = @"C:\Windows\System32";
                myProcess.UseShellExecute = false;
                Process.Start(myProcess);
            }
            catch {


            }

            


        }

    }

1.696 Beiträge seit 2006
vor 8 Jahren

RunAs funktioniert nicht immer, besser die Impersonation driekt im Programm implementieren! Außerdem hast du durch Impersonation im Programm mehr Kontrolle darüber wann mit erhöhten Rechten gearbeitet wird, wann nicht.

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

2.298 Beiträge seit 2010
vor 8 Jahren

Ich würde wie t0ms3n eher dazu tendieren einen Service / Webservice dazwischen zu klemmen, der mit den Rechten zum Zugriff auf das Netzlaufwerk ausgestattet ist.

Das Programm kommuniziert dann ausschließlich mit dem Webservice und braucht auch keine höheren oder anderne Rechte.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |