문제

현재 로그인 한 사용자의 GUID 및 SID를 가져 오려면 다음 코드를 사용할 수 있습니다.

UserPrincipal user = System.DirectoryServices.AccountManagement.UserPrincipal.Current;
Console.WriteLine("{0}, {1}", user.Guid, user.Sid);
.

그러나 사용자가 네트워크에 연결하지 않고도 로그인하면 해당 코드가 실패합니다 ( "서버에 연락 할 수 없음").나는이 사용자의 SID를 연결하지 않더라도 다음과 같이 해당 사용자의 SID를 얻을 수 있습니다 :

WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
Console.WriteLine("{0}", identity.User.Value);
.

그러나 WindowsIdentity 객체에는 내가 알 수있는 한 GUID가 포함되어 있지 않습니다.

네트워크에 연결되지 않은 경우 현재 사용자의 GUID를 얻을 수 있습니까?

참고 : 이것은 웹 앱이 아닌 데스크톱 응용 프로그램입니다.

도움이 되었습니까?

해결책

보안 식별자 (SID)는 각 프로세스 토큰의 일부이며 실제 사용자 식별자입니다.작업 그룹에있을 때 각 컴퓨터의 SAM (레지스트리 부분)에 저장된 경우 도메인에 있으면 Active-Directory의 사용자 개체 속성으로 저장됩니다.

GUID는 Active-Directory의 사용자 객체의 속성이지만,이 객체의 유니콘을 보장하는 것이 주요 목적입니다.

GUID가 Windows 보안의 일부가 아니므로 i'am은 놀랄 일이 아닌 모드에서는 사용할 수 없습니다.

다른 팁

SID는 사용자의 보안 토큰에 저장되어 있으므로 오프라인으로 액세스 할 수 있습니다.GUID는 인트라 인트라 이동 중에 보존됩니다 (동일한 숲의 도메인간에). 따라서 키를 사용하면 좋은 생각입니다.변경하지 않으므로 처음으로 응용 프로그램을 시작할 때 처음으로 사용자의 GUID를 레지스트리에 유지하지 않으시겠습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top