Es ist keine gute Idee, sich auf eine Regex zu verlassen, um zu überprüfen, ob eine SID gültig ist. Zum einen ist die einzige gültige SID-Version 1, so dass dieser Regex denkt, dass S-9-(\d+-){1,14}\d+
gültig ist, wenn 9 keine gültige Version ist. Das Reparieren des Regex auf Version 1 würde jedoch fehlschlagen, sollte es jemals eine neue SID-Version oder gar ein komplett neues SID-Format geben. Der bessere Weg dazu ist, dass das System entscheidet, ob die SID gültig ist. Genau dies tut:
string notSureIfSID = "S-9-5-76-1812374880-3438888550-261701130-6117";
bool sidIsValid = false;
bool sidIsAccount = false;
try {
SecurityIdentifier sid = new SecurityIdentifier(notSureIfSID);
sidIsValid = true;
sidIsAccount = sid.IsAccountSid();
}
catch (ArgumentException) {
// Handle invalid SID
}
Wenn das SID-Format ungültig ist (wenn zum Beispiel der Version nicht 1 oder die Anzahl der Unterbehörden ist mehr als 15 oder weniger als 1) der Konstruktor wird ein Argument werfen. Wenn Sie überprüfen möchten, ob die SID ein tatsächlich vorhandenes Konto ist, rufen Sie einfach IsAccountSid
unter SecurityIdentifier
an.
Suchen Sie eine Validierung oder Verifikation? Zur Überprüfung versuchen Sie einfach ein Konto von der SID zu bekommen. ([Wie kann ich von einer SID zu einem Kontonamen in C# konvertieren] (http://stackoverflow.com/q/499053/1386111)) –
Nein, ich suche nach Verifizierung. Danke –
@ChibuezeOpata Er schlug eine Lösung für die Verifikation - 'Zur Verifikation einfach versuchen, ein Konto von der SID zu bekommen.' – DGibbs