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
[gelöst] WindowsPrincipal / WindowsIdentity funktioniert nicht auf allen Rechnern?
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

[gelöst] WindowsPrincipal / WindowsIdentity funktioniert nicht auf allen Rechnern?

beantworten | zitieren | melden

Hallo,

ich bediene mich für eine Benutzerverwaltung bei Windows.
Auf meinem Rechner in der Firma funktioniert folgender Code:


Thread.CurrentPrincipal = new WindowsPrincipal(new WindowsIdentity(Environment.UserName));

Und dann frage ich die Berechtigungen wir folgt ab:


if(Thread.CurrentPrincipal.IsInRole(Role.MDE_ADMIN.ToString())) {...}

Jetzt zu meinem Problem.

Auf meinem Rechner zu Haus bekomme ich eine Exception:
Zitat
System.Security.SecurityException: Der angegebene Name hat ein falsches Format für einen Kontennamen.

Weiss jemand woran das liegen könnte?
Der Rechner in der Firma ist in einer Domaine, der zu Haus nicht.

Wenn ich den Code ändere in:

Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());

...bekomme ich keine Exception, aber meine Rollen werden nicht erkannt.

Ideen?


Grüße
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Joetempes am .
private Nachricht | Beiträge des Benutzers
Xevion
myCSharp.de - Member



Dabei seit:
Beiträge: 10

beantworten | zitieren | melden

Ist vielleicht eine Dumme Frage, aber hast du mal die Versionen der entsprechenden Bibliotheken verglichen?
Ich hatte so einen Fall mal mit der Office-API, beide Rechner hatten das selber Framework und das selbe OS installiert aber trotzdem war eine Methode in der entsprechenden Klassen anders.
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 704
Herkunft: Lörrach

beantworten | zitieren | melden

Hallo Joetempes,

die Lösung steht in der MSDN :)
Zitat
Dieser Konstruktor ist für die Verwendung auf Computern vorgesehen, die Mitglied ausschließlich von Windows Server 2003-Domänen sind. Bei anderen Domänentypen wird eine Ausnahme ausgelöst. Diese Einschränkung besteht, da der Konstruktor die KERB_S4U_LOGON-Struktur verwendet.
WindowsIdentity-Konstruktor (String)

Ich hab jetzt keine Ahnung, wie man das prüfen könnte, aber wenn Du im Code auf die Domain oder Windows Version prüfst, und dann die entsprechende Methode auswählst sollte das gehen.

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Hallo Stipo,

das scheint der Grund des Problems zu sein, vielen Dank!
Zu meiner Verteidigung, gestern Abend war das MSDN down, sonst hätte ich das sicher selbst gefunden... (Nächste mal warte ich.)

Nun mach ich mich mal auf die suche der Lösung...


Grüße
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Habs gelöst:


Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());

...funktioniert doch, aber nach einer Rollenzuweisung muss der Rechner neu getstartet werden, sonst werden Änderungen nicht erkannt.
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 704
Herkunft: Lörrach

beantworten | zitieren | melden

Zitat
muss der Rechner neu getstartet werden
es reicht, wenn der Benutzer sich neu anmeldet. So hatte das bei mir bis jetzt immer funktioniert.
private Nachricht | Beiträge des Benutzers