![]() |
Как получить название группы Администраторов в переменную.
Написал себе простейший скрипт для рабочих групп-
создает Учетную запись администратора с паролем. net user USER PASS /add и так далее. Проблемма в том, что иногда попадается англицкая винда и группа называется Administrators, а не Администраторы. Я сделал простейший выбор через set /p, 1-ENG 2-RUS. Есть ли способ получить в переменную название группы Администраторы. |
volk1234, а есть ли смысл?
Можно просто обе команды выполнить: Код:
net localgroup Администраторы /add USER Цитата:
Код:
WMIC Group Where "SID = 'S-1-5-32-544'" Get Name Пример: Код:
Set AdmGroupSID=S-1-5-32-544 Код:
Set AdmGroupSID=S-1-5-32-544 |
Мда. Все не так страшно как выглядит в коде :)
Цитата:
Плюс, автоматически можно переименовать локальную учетку Администратор, и понизить ее до Пользователя. Есть несколько организаций по 10 комп. в каждой, с обыной рабочей группой и зверинцем из программ на каждом рабочем месте. Надо все это почистить, вот планирую ... |
Цитата:
Код:
Set AdmAccountRID=500 |
Многоуважаемый Petya V4sechkin!
Остался у меня последний вопрос. Как получить в переменную и понизить в правах УЗ Администратор то есть в итоге Код:
net localgroup %AdmGroup% %AdmName% /delete чесно пытался почитать справку по коммандной строке wmic - страшное дело :) еще конечно хотелось бы следующего: определения всех УЗ с правами администратора. ситуация самая обычная - компьютер на нем установлена WinXP с 2 УЗ: Администратор и Коля (с правами админа) Необходимо это исправить, так как домена нету - исправить ручками или атоматизированно: Админ запись Коля понизить до пользователя, Администратора понизить до пользователя. и так далее если админов больше.... |
Цитата:
Цитата:
Просто задайте нормальный пароль. Цитата:
Код:
For /F "Delims=" %%I In ('Net LocalGroup "%AdmGroup%"') Do Set Last=%%I P. S. Завтра еще проверю формат вывода Net LocalGroup на разных ОС. |
Как раз таки результат и встроенного админа выдает.
Я тут псевдокодом напишу дальнейшее применение: тоесть если я дальше применю вместо Echo %%I Код:
...... Код:
For ( |
Цитата:
И нет переименования: Цитата:
Цитата:
|
с %NewAdmin% разобрался, супер, спасибо.
насчет счетчика - чтобы переместить все учетки в группу пользователи, если у.з. больше одной, админ1 > пользователь админ2 > пользователь админ3 > пользователь а встроенную запись администратора по вашему совету, тогда просто запоролим. Я понимаю, что вы не умеете читать мысли. :) |
Цитата:
Код:
Net LocalGroup "%UserGroup%" "%%I" /Add P. S. После этого не забудьте создать вашу новую учетку и добавить ее в Администраторы. |
UserGroup допер сам сразу. :) RID -545
просто это будет case- скрипт - когда надо полностью ограничить юзверя -так и сделаем. А бывают клиенты - сидит начальник отдела щеки дует - у.з. у него одна Администратор ( себя он считает как минимум продвинутым пользователем) и ничего менять он не намерен, и если не дай бог завтра у него пасьянс откажется устанавливатся- лучше мне выбрасить мобилу сразу. Тут лучше свою вторую учетку добавить. |
Уважаемый Petya V4sechkin !
Подскажите пожалуйста еще: почему у меня не сработала команда: Код:
:LISTADM Далее я хочу сделать тоже самое и для других групп. конкретно не работает последняя команда для печати имени встроенного администратора... |
Цитата:
С тем же успехом можно написать случайную последовательность букв и надеяться, что она заработает... Сначала вы хотели переименовать встроенную учетку Администратор. В 4-м посту я привел пример. Если вы переименовываете админа, то знаете новое имя (каким оно станет). Теперь уже вы не хотите ее переименовывать, а просто выводите на экран. Пожалуйста: Код:
Set AdmAccountRID=500 |
Petya V4sechkin
Во первых спасибо за помощь. Во вторых, то что вы приводили не пошло "в стол", просто я задумал расширить функционал скрипта и ввести для удобства вывод груп и пользователей в консоли - эдакая замена консоли mmc. Может я и изобретаю велосипед и это (вывод всех груп и всех пользователей по группам) можно сделать 1й коммандой, но мне стало интересно это сделать. Правда я упорно не могу найти справки по wmic, а нахрапом логику я не могу понять. Вот приведенный вами пример в предыдущем посте. Я копирую ваш скрипт меняю RID на 545 и выдается ошибка - отсуствуют экземпляры класса. И когда применяется SID=1-5-32-500, а когда SID Like '1-5-%%-%env%' ???? :o :cool: |
Цитата:
Там общие сведения о синтаксисе, командах. Например, GET - получение свойств (Properties), CALL - выполнение метода (Method). Что касается списка классов, вот полный перечень на MSDN. Например, псевдоним UserAccount соответствует классу Win32_UserAccount, а Group - Win32_Group. Еще ссылки: Доступ к WMI из командной строки. Командная оболочка WMIC Командная строка инструментария управления Windows (WMIC) Цитата:
Статью KB243330 внимательно читали? Чувствуете разницу между Group и UserAccount? Цитата:
Цитата:
Курсивом выделенное домен - это буквы/цифры из SID домена или компьютера (уникальные для каждого компьютера). Значит, для получения имени встроенной учетки Администратор достаточно найти такой UserAccount, у которого SID = S-1-5-любая_последовательность_символов-500. В языке запросов SQL (или WQL) это делается оператором LIKE (любая последовательность задается спецсимволом "%" (процент)) в условии WHERE: Код:
LocalAccount = True And SID Like 'S-1-5-%-500' Надеюсь, теперь вам понятно, как формируется условие WHERE в 13-м посту? Цитата:
Никаких уникальных букв/цифр здесь нет. Значит, условие поиска упрощается (LIKE не нужен). P. S. Надеюсь, что все понятно (еще раз такие полотна писать не хочется). P. P. S. Для иллюстрации вышесказанного выполните батник (и сравните команды): Код:
@Echo Off |
:tomato2: |
Petya V4sechkin
восставшие из ада :) Нашел интересное применение этой темы. Например для защиты от Кидо необходимо запретить доступ к определенной ветке реестра для группы "Все". Я использовал батник и утилиту subinacl.exe. SID группы "Все" = S-1-1-0 Взяв за основу ваш скрипт я почему-то не получил названия группы в переменную, а получил пресловутое - отсуствуют экземпляры класса. Для проверки скрипта я подставил вместо SID группы "Все", такой S-1-5-32-544 и получил "Администраторы". батник: Код:
@Echo off |
volk1234, да, Win32_Group не содержит группу Все (и не только).
Полный список: Код:
WMIC Group Where "LocalAccount = True" Get Name, SID Код:
@Echo Off |
Ну это уже черезчур.
Легче и правда тупо писать в двух наименованиях УЗ определить язык ОС да и все. Я так в одном скрипте и сделал: Но меня ждала здесь засада - по языку установки ОС -английская, а накатанный на нее MUI портил мне всю картину с именами УЗ... |
Такой вот скриптик запущенный 1 раз на системе решит проблемму. (Искал искал не нашёл и налобал сам.)
Код:
__author__ = 'abudkar' |
Задачу получения имени локальных администраторов еще можно решить так:
Код:
@set AdminName=Administrator |
etix, во-первых, вычеркните слово «группы». Во-вторых, ничто в принципе не мешает иметь одновременно учётные записи «Администратор» и «Administrator» на одной и той же машине (и даже может оказаться так, что ни одна из них не будет являться встроенной учётной административной записью).
|
Задачу получения имени группы локальных администраторов лучше получить так:
Код:
@echo off |
Foreigner, «их есть» во втором сообщении темы. Это новоявленные (и не очень) коллеги отчего-то возбуждаются.
|
Iska, Не посмотрел в начале, пусть будет напоминанием
|
Время: 15:16. |
Время: 15:16.
© OSzone.net 2001-