Определить локального Администратора
От: Gunshipss  
Дата: 12.07.08 17:27
Оценка:
Как определить локального администратора или группу локальных админов?
Ведь учётку "Администратор" можно переименовать, да и язык может быть разный, на английском это Administrator на немецком ещё какойта, а нужно точно определить из всех локальных пользователей самого привилегированного. Тоже самое для групп.

Может кто знает?

Перебираю пользователей:


            DirectoryEntry root = new DirectoryEntry("WinNT://" + Environment.MachineName);
            foreach (DirectoryEntry de in root.Children)
            {
                if (de.SchemaClassName == "User")
                {
                }
            }
Re: Определить локального Администратора
От: madbinom  
Дата: 12.07.08 18:31
Оценка:
Здравствуйте, Gunshipss, Вы писали:

G>Как определить локального администратора или группу локальных админов?

G>Ведь учётку "Администратор" можно переименовать, да и язык может быть разный, на английском это Administrator на немецком ещё какойта, а нужно точно определить из всех локальных пользователей самого привилегированного. Тоже самое для групп.

Сейчас у меня виста, в ней нет нижеприведенного раздела, а раньше был раздел такой:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
может там, что было про эккаунты(я пользовал для скрытия пользователя из винлогона)

Не думаю, что вам поможет, но все же. А в WMI рылись?
Re: Определить локального Администратора
От: baranovda Российская Империя  
Дата: 12.07.08 20:57
Оценка: 3 (1)
Здравствуйте, Gunshipss, Вы писали:

WindowsPrincipal.IsInRole(WindowsBuiltInRole)
Re: Определить локального Администратора
От: Clevelus Россия http://clevelus.ru
Дата: 12.07.08 20:59
Оценка:
Здравствуйте, Gunshipss, Вы писали:

G>Как определить локального администратора или группу локальных админов?

G>Ведь учётку "Администратор" можно переименовать, да и язык может быть разный, на английском это Administrator на немецком ещё какойта, а нужно точно определить из всех локальных пользователей самого привилегированного. Тоже самое для групп.

G>Может кто знает?


G>Перебираю пользователей:



G>
G>            DirectoryEntry root = new DirectoryEntry("WinNT://" + Environment.MachineName);
G>            foreach (DirectoryEntry de in root.Children)
G>            {
G>                if (de.SchemaClassName == "User")
G>                {
G>                }
G>            }
G>


А еще группа администраторов может быть отключена или ограничена в правах ...
Нужно перебирать на наличие определенных, нужных тебе прав ... а точнее обычно проверяется есть ли у введенного пользователя юзером нужные права.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re: Определить локального Администратора
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.07.08 15:19
Оценка: 8 (2)
Здравствуйте, Gunshipss, Вы писали:

G>Как определить локального администратора или группу локальных админов?

G>Ведь учётку "Администратор" можно переименовать, да и язык может быть разный, на английском это Administrator на немецком ещё какойта

Все предопределенные локальные группы и пользователи имеют заранее известный фиксированный SID.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Определить локального Администратора
От: leonidvp Россия  
Дата: 13.07.08 16:27
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:


AVK>Все предопределенные локальные группы и пользователи имеют заранее известный фиксированный SID.


Уточню, у некоторых аккаунтов известен не SID (целиком), а его последняя часть (RID). У Администратора он = 500.
И SID Администратора — [СИД машины(домена)]-500
Re[3]: Определить локального Администратора
От: Gunshipss  
Дата: 13.07.08 16:35
Оценка:
Здравствуйте, leonidvp, Вы писали:

L>Здравствуйте, AndrewVK, Вы писали:



AVK>>Все предопределенные локальные группы и пользователи имеют заранее известный фиксированный SID.


L>Уточню, у некоторых аккаунтов известен не SID (целиком), а его последняя часть (RID). У Администратора он = 500.

L>И SID Администратора — [СИД машины(домена)]-500


Затестил:

Name: ADMIN
SID: S-1-5-21-823518204-492894223-1708537768-1003

Name: ASPNET
SID: S-1-5-21-823518204-492894223-1708537768-1005

Name: HelpAssistant
SID: S-1-5-21-823518204-492894223-1708537768-1000

Name: SUPPORT_388945a0
SID: S-1-5-21-823518204-492894223-1708537768-1002

Name: Администратор
SID: S-1-5-21-823518204-492894223-1708537768-500

Name: Гость
SID: S-1-5-21-823518204-492894223-1708537768-501


Name: HelpAssistant
SID: S-1-5-21-117609710-1123561945-839522115-1000

Name: IUSR_NONE-3253C42380
SID: S-1-5-21-117609710-1123561945-839522115-1004

Name: IWAM_NONE-3253C42380
SID: S-1-5-21-117609710-1123561945-839522115-1005

Name: SUPPORT_388945a0
SID: S-1-5-21-117609710-1123561945-839522115-1002

Name: Администратор
SID: S-1-5-21-117609710-1123561945-839522115-500

Name: Гость
SID: S-1-5-21-117609710-1123561945-839522115-501


Действительно RID у админа 500 у гостя 501.

Спасибо за ответы.
Re[4]: Определить локального Администратора
От: Clevelus Россия http://clevelus.ru
Дата: 13.07.08 20:26
Оценка:
Здравствуйте, Gunshipss, Вы писали:

G>Здравствуйте, leonidvp, Вы писали:


L>>Здравствуйте, AndrewVK, Вы писали:



AVK>>>Все предопределенные локальные группы и пользователи имеют заранее известный фиксированный SID.


L>>Уточню, у некоторых аккаунтов известен не SID (целиком), а его последняя часть (RID). У Администратора он = 500.

L>>И SID Администратора — [СИД машины(домена)]-500


G>Затестил:

G>

G>Name: ADMIN
G>SID: S-1-5-21-823518204-492894223-1708537768-1003

G>Name: ASPNET
G>SID: S-1-5-21-823518204-492894223-1708537768-1005

G>Name: HelpAssistant
G>SID: S-1-5-21-823518204-492894223-1708537768-1000

G>Name: SUPPORT_388945a0
G>SID: S-1-5-21-823518204-492894223-1708537768-1002

G>Name: Администратор
G>SID: S-1-5-21-823518204-492894223-1708537768-500

G>Name: Гость
G>SID: S-1-5-21-823518204-492894223-1708537768-501


G>

G>Name: HelpAssistant
G>SID: S-1-5-21-117609710-1123561945-839522115-1000

G>Name: IUSR_NONE-3253C42380
G>SID: S-1-5-21-117609710-1123561945-839522115-1004

G>Name: IWAM_NONE-3253C42380
G>SID: S-1-5-21-117609710-1123561945-839522115-1005

G>Name: SUPPORT_388945a0
G>SID: S-1-5-21-117609710-1123561945-839522115-1002

G>Name: Администратор
G>SID: S-1-5-21-117609710-1123561945-839522115-500

G>Name: Гость
G>SID: S-1-5-21-117609710-1123561945-839522115-501


G>Действительно RID у админа 500 у гостя 501.


G>Спасибо за ответы.


Кстати, где-то на просторах Microsoft валялся документ, в котором все sid определенные строго были перечислены (просто когда клонируешь машинку в домене нужно сиды перебить, но не все — на это есть специальная утилитка)

Повторюсь: в большинстве случаев поиск администратора — неверен, так как у него может не быть прав. В нормальных доменах, например, локального админа отрубают, но работаеют доменные админы, да и ... вариантов миллион. Верно искать (проверять) пользователя, имеющего определенные права, или в крайнем случае состоящем в определенной группе.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re[5]: Определить локального Администратора
От: leonidvp Россия  
Дата: 14.07.08 19:58
Оценка: +1
Здравствуйте, Clevelus, Вы писали:
C>Кстати, где-то на просторах Microsoft валялся документ, в котором все sid определенные строго были перечислены

Вот по теме
http://msdn.microsoft.com/en-us/library/aa379649(VS.85).aspx
http://support.microsoft.com/kb/243330/en-us
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.