To nie jest dobry pomysł, aby polegać na wyliczeniu, aby sprawdzić, czy identyfikator SID jest ważny. Po pierwsze, jedyną prawidłową wersją SID jest 1, więc to wyrażenie będzie uważać, że S-9-(\d+-){1,14}\d+
jest ważne, gdy 9 nie jest poprawną wersją. Jednak naprawienie wyrażenia regularnego zezwalającego tylko na dopuszczenie wersji 1 zakończyłoby się niepowodzeniem, gdyby kiedykolwiek powstała nowa wersja SID lub nawet zupełnie nowy format SID. Lepszym sposobem na to jest niech system zdecyduje, czy identyfikator SID jest ważny. Wystarczy to zrobić:
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
}
Jeśli format SID jest nieważna (jeśli na przykład wersja nie jest 1 lub liczbę podrzędnych organów wynosi ponad 15 lub mniej niż 1) konstruktor rzuci ArgumentException. Jeśli chcesz sprawdzić, czy identyfikator SID jest rzeczywistym istniejącym kontem, po prostu zadzwoń pod numer IsAccountSid
na SecurityIdentifier
.
Szukasz weryfikacji lub weryfikacji? W celu weryfikacji wystarczy spróbować uzyskać konto z identyfikatora SID. ([Jak mogę przekonwertować z identyfikatora SID na nazwę konta w języku C#] (http://stackoverflow.com/q/499053/1386111)) –
Nie, szukam weryfikacji. Dzięki –
@ ChibuezeOpata Zasugerował rozwiązanie do weryfikacji - 'Aby zweryfikować po prostu spróbuj uzyskać konto z SID. – DGibbs