2012-02-20 5 views
3

Я пишу приложение в Windows XP, которое дает SID пользователя.Получение SID пользователей

С действительными маркерами ручкой, когда я называю GetTokenInfomation API с TokenUser в качестве второго параметра затем каждый раз & для всех учетной записи пользователя, я получаю Valid SID в PTOKEN_USER переменной структуре.

Действительно Sid => Sid является S-1-5-21-1121170692-2157880286-4158546613-1000

Здесь RID есть => 1000

Но когда я использую NetQueryDisplayInformation API с NET_DISPLAY_USER как уровень информации (второй параметр), то я получаю NET_DISPLAY_USER структуру как из параметра ,

User123 - это моя учетная запись, которая имеет административные права.

С помощью NET_DISPLAY_USER структуры, когда я взываю к LookupAccountName API с переменной NET_DISPLAY_USER.usri1_name в качестве имени учетной записи пользователя, то для User123 учетной записи я получаю SID без РИД.

например. Как это => Sid является S-1-5-21-1121170692-2157880286-4158546613

Для другого счета с той же процедурой, дает мне правильный SID т.е. SID с RID

например Действительный Sid => Sid S-1-5-21-1121170692-2157880286-4158546613-1000

Просьба предоставить мне любые указатели на возврат SID без RID во втором случае.

+0

Вы уверены, что хотите SID без RID? Или вы имеете в виду SID с RID, даже для User123? И если вы действительно имеете в виду без RID, что вы собираетесь делать с этим SID? – Anders

ответ

1

AFAIK у вас не может быть (действительный) SID пользователя без этого окончательного RID, поэтому что-то должно быть не так с поиском. Вы уверены, что ваш вызов LookupAccountName преуспевает? Какова ценность вашего SID_NAME_USE после успешного вызова LookupAccountName?

A comment в MSDN указывает, что LookupAccountName вернет неправильное значение, если имя пользователя и имя машины совпадают, но я предполагаю, что ваш компьютер не называется «User123».

Просьба предоставить мне любые указатели на возврат SID без RID во втором корпусе.

Вы уверены, что хотите этого? Если вы это сделаете, вы можете просто преобразовать в строку, отрубить последнюю часть «-xxx» и преобразовать обратно, но я не думаю, что передал бы этот SID любой другой функции, так как это может быть неверно. (И только так, когда SID_NAME_USE у вас есть SidTypeUser)

+0

Привет, Андерс, имя моей машины и имя пользователя не совпадают. API GetTokenInfomation дает мне полный SID пользователя, который говорит user123, но когда я использую API NetQueryDisplayInformation, то для того же пользователя user123 он не дает мне SID с RID. Мне нужен полный SID с помощью API NetQueryDisplayInformation. Для других учетных записей, кроме user123, API-интерфейс NetQueryDisplayInformation дает мне действительный SID с RID. – user1215771

+0

Идет ли LookupAccountName и что такое возвращаемый SID_NAME_USE? – Anders