Laden...

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

Erstellt von Joetempes vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.864 Views
Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 13 Jahren
[gelöst] WindowsPrincipal / WindowsIdentity funktioniert nicht auf allen Rechnern?

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:

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

X
10 Beiträge seit 2010
vor 13 Jahren

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.

699 Beiträge seit 2007
vor 13 Jahren

Hallo Joetempes,

die Lösung steht in der MSDN 😃

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

Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 13 Jahren

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

Joetempes Themenstarter:in
888 Beiträge seit 2007
vor 13 Jahren

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.

699 Beiträge seit 2007
vor 13 Jahren

muss der Rechner neu getstartet werden

es reicht, wenn der Benutzer sich neu anmeldet. So hatte das bei mir bis jetzt immer funktioniert.