Автор Тема: _WinUser UDF v2.6 - работа с учетными записями и группами Windows  (Прочитано 15169 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн joiner [?]

  • Расмус-бродяга
  • Локальный модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
теперь проблем с кодировкой нет. комменты тоже добавляются корректно.
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Русское сообщество AutoIt

Re: _WinUser UDF v2.6 - работа с учетными записями и группами Windows
« Ответ #15 Отправлен: Август 17, 2013, 01:03:57 »

Оффлайн mef-t [?]

  • Осваивающий
  • **
  • Сообщений: 303
  • Репутация: 30
    • Награды
Если UDF все еще поддерживается, то
Код: AutoIt [Выделить]
_WinUser_IsAdmin('Гость')

возвращает значение:

Цитировать
ЌҐ ­ ©¤Ґ­® Ё¬п Ї®«м§®ў ⥫п.

„«п ўл§®ў  ¤®Ї®«­ЁвҐ«м­®© бЇа ўЄЁ ­ ЎҐаЁвҐ NET HELPMSG 2221.

2

Данная учетная запись существует, но не активна. Возвращена функцией _WinUser_GetAllNames()
Наличие других значений кроме 0, 1, 2 портит результат.
« Последнее редактирование: Август 24, 2015, 10:29:25 от mef-t »

Оффлайн mef-t [?]

  • Осваивающий
  • **
  • Сообщений: 303
  • Репутация: 30
    • Награды
Так же, если еще поддерживаете функции, было бы хорошо, если Вы добавить возможность выполнять данные функции от другой учетной записи.

Русское сообщество AutoIt

Re: _WinUser UDF v2.6 - работа с учетными записями и группами Windows
« Ответ #17 Отправлен: Август 27, 2015, 11:10:37 »

Оффлайн Sky-WaLkeR [?]

  • Продвинутый
  • ***
  • Сообщений: 332

  • Автор темы
  • Репутация: 95
  • Пол: Мужской
    • Naboko
    • Награды
  • Версия AutoIt: 3.3.12.0
Спасибо за багрепорт. Сегодня постараюсь решить первую проблему и посмотреть в сторону второй. Заодно проверю библиотеку на Windows 10.

Библиотека довольно старая и часто переписывалась, поэтому, к сожалению, вот такие глупые ошибки могут всплывать. Если найдете что-то еще, просьба отписаться.


Добавлено: Август 27, 2015, 14:05:53
mef-t,
Странно. Только что запустил следующий код на Win8: (Гость неактивен)
Код: AutoIt [Выделить]
MsgBox(0, '', _WinUser_IsAdmin("Гость"))

Вернуло 0. Да и там в принципе по коду не может прилететь ничего, кроме 0,1,2. Можете подробнее описать свою систему? И покажите вывод "chcp" в консоли. Так, на всякий...

Выполнение от другого пользователя сделаю, серьезных сложностей с этим быть не должно.
« Последнее редактирование: Август 27, 2015, 14:05:53 от Sky-WaLkeR, Причина: Объединение сообщений »

Оффлайн mef-t [?]

  • Осваивающий
  • **
  • Сообщений: 303
  • Репутация: 30
    • Награды
Я был не прав.
Как я понял, это данные, которые выводятся в консоль.
При этом выводятся непосредственно в запускаемых функциях.
Код, который это выводит:
Код: AutoIt [Выделить]
#include <WinUser.au3>
_WinUser_IsAdmin('Гость')

Это весь код.

А результат по спойлером:
(нажмите для показа/скрытия)

Сама функция возвращает правильное значение.

Цитировать
Выполнение от другого пользователя сделаю, серьезных сложностей с этим быть не должно.
Тут я с Вами согласен. И могу добавить сам. Но... если это будет сделано Вами, то при будущих доработках не возникнет сложностей с обновлением :)

Русское сообщество AutoIt

Re: _WinUser UDF v2.6 - работа с учетными записями и группами Windows
« Ответ #19 Отправлен: Сентябрь 02, 2015, 09:20:42 »

Оффлайн Sky-WaLkeR [?]

  • Продвинутый
  • ***
  • Сообщений: 332

  • Автор темы
  • Репутация: 95
  • Пол: Мужской
    • Naboko
    • Награды
  • Версия AutoIt: 3.3.12.0
Прошу прощения. Я тут постоянно меняю географическое местоположение, да еще приболел немного, совсем забыл про Вас.

Судя по всему, мусор в консоль валится по потоку STDERR, который я как раз не перехватывал. В вашем случае выбрасывается ошибка "Не найдено имя пользователя", что довольно странно - у меня так же неактивен гость, но STDERR пуст.

Библиотеку в шапке пока обновлять не буду (надо маленько подшлифовать, как силы появятся), пока сброшу сюда
(нажмите для показа/скрытия)

Новая функция, _WinUser_ExecAs, позволяет указать, от чьего имени делать команды. Если вызвать без параметров (или вообще не вызывать), будет использоваться обычный Run вместо RunAs. Примерчик:
(нажмите для показа/скрытия)

Тонкие моменты:
• Пока не добавил в начало примера #RequireAdmin, не работало даже с вызовом под своей учетной записью. Видимо, из-за UAC или еще чего.
• Из функции _WinUser_GetAll убрано получение информации о стране. На Windows 10 не заработало, видимо, изменилось что-то. Можно вернуть, раскоментировав строки 684-685. Отдельные функции по странам оставил, но на Win10 скорее всего поломается.
• Чтобы перенаправить вывод STDERR обратно в консоль (только теперь не кракозябрами на cp866, а уже нормальным текстом), раскомментировать строку 822
• Обработка ошибки через STDERR пока не сделана, хотя __WinUser_Run уже умеет возвращать ее. Доделаю, когда буду в нормальном самочувствии.

(поэтому в шапку и не бросаю пока...)

Если найдете еще что-то, с удовольствием выслушаю и постараюсь пофиксить \ реализовать.
« Последнее редактирование: Сентябрь 03, 2015, 17:52:45 от Sky-WaLkeR »

Оффлайн mef-t [?]

  • Осваивающий
  • **
  • Сообщений: 303
  • Репутация: 30
    • Награды
Спасибо


Добавлено: Сентябрь 03, 2015, 10:03:19
Правильно ли я понял, что данная реализация не подойдет к доменной структуре?
В качестве домена подставляется @ComputerName

В _WinUser_ExecAs() можно добавить третий параметр, который по умолчанию будет принимать значение @ComputerName
Кстати, домен текущего соединения так же можно получить, используя Ваш скрипт, немного доработав
ipconfig /all
"Основной DNS-суффикс"
Но это если я не ошибаюсь.


Добавлено: Сентябрь 03, 2015, 10:31:14
Что то вроде такого:

Код: AutoIt [Выделить]
$user_string = 'ipconfig /all'
$data = __WinUser_Run($user_string)
$domen = StringRegExp($data, 'Основной DNS-суффикс' & '.*: (.*)', 3)
$domen = $domen[0]
ConsoleWrite($domen & @CRLF)



Добавлено: Сентябрь 03, 2015, 10:39:11
Хотя нет. Это скорее всего частный случай, который работает только у меня.


Добавлено: Сентябрь 03, 2015, 10:46:07
Вы используете переменную $RUN_LOGON_NOPROFILE.
При этом я не нашел, где присваивается значение.
« Последнее редактирование: Сентябрь 03, 2015, 10:46:07 от mef-t, Причина: Объединение сообщений »

Оффлайн Sky-WaLkeR [?]

  • Продвинутый
  • ***
  • Сообщений: 332

  • Автор темы
  • Репутация: 95
  • Пол: Мужской
    • Naboko
    • Награды
  • Версия AutoIt: 3.3.12.0
Обновил предыдущий пост - добавил третий параметр (домен) в функцию __WinUser_ExecAs.

Насчет авто-поиска доменного имени ничего сказать не могу, под доменом (по крайней мере AD) не сидел. Вполне возможно, что Ваш вариант сработает в 99% случаях, но только нужен еще этот текст с английской системы, и немного дополнить код, чтобы у людей вне домена тоже работало.

Код: AutoIt [Выделить]
$data = __WinUser_Run("ipconfig /all")
; $domain = StringRegExp($data, __WinUser_GetString("domain")&".*?:(.*)", 3)
$domain = StringRegExp($data, 'Основной DNS-суффикс.*?: (.*)', 3)
$domain = $domain[0]
If $domain = "" Then $domain = @ComputerName


Я правильно понимаю - в аргумент domain функции RunAs нужно подставить нечто в виде %домен%\\%имя_компьютера%, или просто домен (результат, полученный выше)?

Переменная объявлена в Constants.au3, который подключен в WinUser.au3

UPD: вопрос с английской системой снят ("Primary Dns Suffix"), остался только вопрос выше.
UPD2: слушайте, а в выводе команды "net user" случаем не присутствует искомое? http://prntscr.com/8c5mdx
« Последнее редактирование: Сентябрь 03, 2015, 17:50:50 от Sky-WaLkeR »

Русское сообщество AutoIt

Re: _WinUser UDF v2.6 - работа с учетными записями и группами Windows
« Ответ #22 Отправлен: Сентябрь 03, 2015, 17:09:10 »

Оффлайн mef-t [?]

  • Осваивающий
  • **
  • Сообщений: 303
  • Репутация: 30
    • Награды
1. В выводе команды "net user" у меня отображается мое сетевое имя.
2. С английским все верно. В RunAs нужно подставить %домен%. Без имени ПК.

Думаю, с поиском доменом дорабатывать все же не стоит. Походу, там все сложнее. У меня частный случай.
Найденное значение действительно является суффиксом DNS, и у нас оно совпадает с доменом.
Но это целиком и полностью настраивается, и не обязательно суффикс ДНС совпадет с именем домена.

Так что тут нужно искать способ получения ДНС. Поинтересуюсь у знакомых.

Как найду, напишу.

Русское сообщество AutoIt

Re: _WinUser UDF v2.6 - работа с учетными записями и группами Windows
« Ответ #23 Отправлен: Сентябрь 09, 2015, 12:00:32 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
3981 Просмотров
Последний ответ Май 29, 2010, 20:39:34
от snoitaleR
7 Ответов
7136 Просмотров
Последний ответ Декабрь 06, 2010, 00:02:36
от Kaster
1 Ответов
3286 Просмотров
Последний ответ Декабрь 03, 2012, 00:00:07
от Vinosh
4 Ответов
2865 Просмотров
Последний ответ Март 01, 2013, 14:32:17
от Talany
4 Ответов
2603 Просмотров
Последний ответ Январь 26, 2015, 22:15:40
от sandrose
5 Ответов
2843 Просмотров
Последний ответ Апрель 16, 2014, 10:44:00
от AZJIO
10 Ответов
3401 Просмотров
Последний ответ Декабрь 07, 2014, 01:55:24
от Fanatmb
2 Ответов
1599 Просмотров
Последний ответ Май 26, 2015, 22:42:23
от Tapok
4 Ответов
1707 Просмотров
Последний ответ Сентябрь 11, 2015, 14:37:32
от inververs
1 Ответов
1941 Просмотров
Последний ответ Январь 22, 2016, 10:53:53
от inververs