В Win32, вызовите GetTokenInformation, передавая маркер ручку и постоянную TokenUser
. Он заполнит для вас структуру TOKEN_USER. Один из элементов в нем - SID пользователя. Это BLOB (двоичный), но вы можете превратить его в строку, используя ConvertSidToStringSid.
Чтобы получить ручку текущего маркера, используйте OpenThreadToken или OpenProcessToken.
Если вы предпочитаете ATL, у него есть класс CAccessToken, в котором есть всевозможные интересные вещи.
. NET имеет свойство Thread.CurrentPrinciple, которое возвращает ссылку IPrincipal. Вы можете получить SID:
IPrincipal principal = Thread.CurrentPrincipal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
if (identity != null)
Console.WriteLine(identity.User);
Кроме того, в .NET, вы можете использовать WindowsIdentity.GetCurrent(), который возвращает текущий идентификатор пользователя:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (identity != null)
Console.WriteLine(identity.User);
языка программирования/окружающая среда? – 2008-10-30 18:31:57