Необходимо получить подтверждение нахождения пользователя в заданных группах.
Получил Principal у него беру IsInRole и задаю указанную группу. Ответ False. Залез в дебаг, у пользователя нет ни одной группы.
Создал отдельную группу. Занес пользователя (себя) в эту группу. Проверяю -> пусто.
Пользователь являетяс пользователем домена на win2k предположил что происходит проверка пользователя на нахождение в группе на текущей машине — результат отрицательный 8(.

что делать, может кто сталкивался? если да, то подскажите.
Здравствуйте, MEPTB, Вы писали:
MEP>Необходимо получить подтверждение нахождения пользователя в заданных группах.
MEP>Получил Principal у него беру IsInRole и задаю указанную группу. Ответ False. Залез в дебаг, у пользователя нет ни одной группы.
MEP>Создал отдельную группу. Занес пользователя (себя) в эту группу. Проверяю -> пусто.
MEP>Пользователь являетяс пользователем домена на win2k предположил что происходит проверка пользователя на нахождение в группе на текущей машине — результат отрицательный 8(.
Видно имя группы указывается в неверном формате.
Правильное имя можно узнать выполнив под отладчиком код и посмотрев значение поля m_roles
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
System.Security.Principal.WindowsPrincipal principal = (System.Security.Principal.WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
principal.IsInRole("Check");
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, MEPTB, Вы писали:
TK>Видно имя группы указывается в неверном формате.
TK>Правильное имя можно узнать выполнив под отладчиком код и посмотрев значение поля m_roles
TK>TK>AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
TK>System.Security.Principal.WindowsPrincipal principal = (System.Security.Principal.WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
TK>principal.IsInRole("Check");
TK>
Сообщу интересную особенность. Это касается m_roles. В неё, как я понимаю должны устанавливаться роли пользователя. Одно только но! Так как вся фенкциональность по получению групп пользователей находиться в win32 то одращение происходит через прокси, а это означает, что ничего не видем в деаге 8(. Если же в качестве параметра передать WindowsBuiltInRole.Administrator из System.Security.Principal, то получим true. Посморев значение элемента enum_а данного получил число 544. Это аля идентификатор роли администратора. Пробежав и проверив числа перебором нашел ещё несколько. Но это фигня, мне всё равно нужно проверить принадлежность к СВОЕЙ группе. Я уже и на домен положу, обойдусь и группой на текущей машине, но эта зараза всёравно не принемает строковое представление.
Здравствуйте, MEPTB, Вы писали:
Я уже и на домен положу, обойдусь и группой на текущей машине, но эта зараза всёравно не принемает строковое представление.
Надо указывать имя домена + имя группы(или имя домена+имя пользователя), тогда все нормально будет, по крайней мере, у меня следующий пример нормально проходил
System.Security.Principal.WindowsIdentity oWe=System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal oWp=new System.Security.Principal.WindowsPrincipal(oWe);
bool blI=oWp.IsInRole("ИМЯ_ДОМЕНА\\ИМЯ_ГРУППЫ");
if(blI)
System.Windows.Forms.MessageBox.Show("success");