Что нового

_WinUser UDF v2.6 - работа с учетными записями и группами Windows

sss

Продвинутый
Сообщения
332
Репутация
95
AutoIt: 3.3.8.1
Версия: 2.6

Категория: Администратирование, Система

Описание:
Библиотека для работы (добавление, удаление, установка параметров) с пользователями (учетными записями) Windows. Делал для себя, решил выложить, может пригодится. Использует net user и net localgroup.
Все функции работают в русской и английской версиях WinXP и Win7.
Большое спасибо Yuriy за пост

Справка по функциям находится в самом файле UDF - просто введите в поиск имя функции.

_WinUser_Add - создает учетную запись
_WinUser_AddToGroup - добавляет пользователя в группу
_WinUser_CreateGroup - создает группу
_WinUser_Delete - удаляет пользователя
_WinUser_DeleteGroup - удаляет группу
_WinUser_GetAll - возвращает в массиве все параметры учетной записи
_WinUser_GetAllNames - возвращает массив всех учетных записей
_WinUser_GetComment - возвращает комментарий
_WinUser_GetCountryCode - возвращает код страны
_WinUser_GetCountryName - возвращает имя страны
_WinUser_GetFullName - возвращает полное имя
_WinUser_GetLastLoginTime - возвращает время последнего входа
_WinUser_GetSID - возвращает SID (спасибо VladUs)
_WinUser_IsActive - проверяет активность
_WinUser_IsAdmin - проверяет админ. права
_WinUser_RemoveFromGroup - удаляет пользователя из группы
_WinUser_SetAll - устанавливает все параметры учетной записи
_WinUser_SetActive - активирует/деактивирует
_WinUser_SetAdmin - ставит/убирает админ. права
_WinUser_SetComment - ставит комментарий
_WinUser_SetCountryCode - ставит код страны
_WinUser_SetFullName - ставит полное имя
_WinUser_SetLoginScript - ставит путь до сценария входа
_WinUser_SetPassword - ставит/убирает пароль

В планах:
Список пользователей, установка даты истечения учетной записи, установка домашней директории, получение списка групп, в которых состоит пользователь, тесты на Windows 8

Код/Пример:
Код:
#include "WinUser.au3"

$productname = 'WinUser Example'
$name = 'я_русский'
$comment = 'я_русский_комментарий'
$group = 'MegaTestGroup'

MsgBox(0, $productname, 'Получение списка пользователей')
$ret = _WinUser_GetAllNames()
$string = ''
For $i = 1 To $ret[0]
	$string = $string & @CRLF & 'Пользователь ' & $i & ': ' & $ret[$i]
Next
MsgBox(0, $productname, 'Список пользователей:' & $string)

MsgBox(0, $productname, 'Создание пользователя ' & $name)
$ret = _WinUser_Add($name)
If $ret = 1 Then
	MsgBox(0, $productname, 'Создание выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Деактивирование пользователя ' & $name & ' (делаем неактивным)')
$ret = _WinUser_SetActive($name, 0)
If $ret = 1 Then
	MsgBox(0, $productname, 'Деактивирование выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Создание группы ' & $group)
$ret = _WinUser_CreateGroup($group)
If $ret = 1 Then
	MsgBox(0, $productname, 'Создание выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Добавление пользователя ' & $name & ' в группу ' & $group)
$ret = _WinUser_AddToGroup($name, $group)
If $ret = 1 Then
	MsgBox(0, $productname, 'Добавление выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Добавляем комментарий "' & $comment & '" для пользователя ' & $name)
$ret = _WinUser_SetComment($name, $comment)
If $ret = 1 Then
	MsgBox(0, $productname, 'Добавление выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Информация о пользователе ' & $name)
$ret = _WinUser_GetAll($name)
MsgBox(0, $productname, 'Пользователь ' & $name & @CRLF & _
		'Полное имя: ' & $ret[0] & @CRLF & _
		'Комментарий: ' & $ret[1] & @CRLF & _
		'Администратор?: ' & $ret[2] & @CRLF & _
		'Активен?: ' & $ret[3] & @CRLF & _
		'Код страны: ' & $ret[4] & @CRLF & _
		'Название страны: ' & $ret[5] & @CRLF)

MsgBox(0, $productname, 'Удаление пользователя ' & $name & ' из группы ' & $group)
$ret = _WinUser_RemoveFromGroup($name, $group)
If $ret = 1 Then
	MsgBox(0, $productname, 'Удаление выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Удаление группы ' & $group)
$ret = _WinUser_DeleteGroup($group)
If $ret = 1 Then
	MsgBox(0, $productname, 'Удаление выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

MsgBox(0, $productname, 'Удаление пользователя ' & $name)
$ret = _WinUser_Delete($name)
If $ret = 1 Then
	MsgBox(0, $productname, 'Удаление выполнено успешно!')
Else
	MsgBox(0, $productname, 'Где-то ошибка! Выхожу...')
	Exit
EndIf

Файл: AU3 (сама UDF)
Патч для SciTE - подсветка функций и подсказки (EXE)

Раньше патч не работал - прошу прощения за неудобства. Теперь все хорошо
Этот патч редактирует 2 файла - au3.user.calltips.api и au3.keywords.properties. Функции будут подсвечиваться (как, например, функции библиотеки _WinAPI), а также будут появляться подсказки. Старался сделать его универсальным. Сначала он пытается найти SciTE по стандартному пути, если не находит - предлагает указать. При обновлении библиотеки Файлы восстанавливать не нужно - запускаете обновленный патч, и он добавит или удалит нужные строки. Если вдруг что-то пошло не так Вы всегда сможете восстановить эти файлы, так как патч создает их бекап (%файл%.backup). Для удобства - по ссылке качается EXE-файл. Исходный код представлен ниже:
Код:
#include <Array.au3>

$scite_path = @ProgramFilesDir & '\AutoIt3\SciTE'
If Not FileExists($scite_path & '\scite.exe') Then
	$scite = FileSelectFolder('Укажите путь до папки SciTE', "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 2)
	If $scite = '' Then Exit
EndIf

$calltips_file = $scite_path & '\api\au3.user.calltips.api'
$keywords_file = $scite_path & '\Properties\au3.keywords.properties'

FileCopy($calltips_file, $calltips_file & '.backup', 1)
FileCopy($keywords_file, $keywords_file & '.backup', 1)

; ==== usercalltips
Dim $calltips[24] = ['_WinUser_Add(имя, [ пароль="",[ админ?=0,[ активна?=1,[ полное имя=имя,[ коммент.="",[ может менять пароль?=1]]]]]]) Создает новую учетную запись. <WinUser.au3>', _
		'_WinUser_AddToGroup(имя, группа) Добавляет пользователя в группу. <WinUser.au3>', _
		'_WinUser_CreateGroup(группа) Создает группу. <WinUser.au3>', _
		'_WinUser_Delete(имя) Удаляет учетную запись. <WinUser.au3>', _
		'_WinUser_DeleteFromGroup(имя, группа) Удаляет пользователя из группы. <WinUser.au3>', _
		'_WinUser_DeleteGroup(группа) Удаляет группу. <WinUser.au3>', _
		'_WinUser_GetAll(имя) Возвращает в массиве информацию о пользователе. <WinUser.au3>', _
		'_WinUser_GetAllNames() Возвращает все учетные записи в массиве. <WinUser.au3>', _
		'_WinUser_GetComment(имя) Возвращает комментарий к учетной записи. <WinUser.au3>', _
		'_WinUser_GetCountryCode(имя) Возвращает код страны учетной записи. <WinUser.au3>', _
		'_WinUser_GetCountryName(имя) Возвращает имя страны учетной записи. <WinUser.au3>', _
		'_WinUser_GetFullName(имя) Возвращает полное имя учетной записи. <WinUser.au3>', _
		'_WinUser_GetLastLoginTime(имя) Возвращает дату входа учетной записи (формат - дд.мм.гг чч.мм). <WinUser.au3>', _
		'_WinUser_GetSID(имя) Возвращает SID учетной записи. <WinUser.au3>', _
		'_WinUser_IsActive(имя) Проверяет активность учетной записи. <WinUser.au3>', _
		'_WinUser_IsAdmin(имя) Проверяет права учетной записи. <WinUser.au3>', _
		'_WinUser_SetAll(имя, [пароль="", [$админ?=0, [активен?=1, [полное имя="", [коммент.="", [может менять пароль?=1 ]]]]]]) Настраивает учетную запись пользователя. <WinUser.au3>', _
		'_WinUser_SetActive(имя, активна?) Ставит активность учетной записи. <WinUser.au3>', _
		'_WinUser_SetAdmin(имя, [админ?=1]) Ставит права учетной записи. <WinUser.au3>', _
		'_WinUser_SetComment(имя, [коммент.=""]) Ставит комментарий к учетной записи. <WinUser.au3>', _
		'_WinUser_SetCountryCode(имя, [код=0]) Ставит код страны учетной записи. <WinUser.au3>', _
		'_WinUser_SetFullName(имя, [имя=""]) Ставит полное имя учетной записи. <WinUser.au3>', _
		'_WinUser_SetLoginScript(имя, [путь=""]) Ставит путь до сценнария входа учетной записи. <WinUser.au3>', _
		'_WinUser_SetPassword(имя, [пароль=""]) Ставит пароль для учетной записи. <WinUser.au3>']

$calltips_data = FileRead($calltips_file)
For $i = 0 To UBound($calltips) - 1
	$regex = StringRegExp($calltips[$i], '(.*?)\(', 3)
	If StringInStr($calltips_data, $regex[0]) And (Not StringInStr($calltips_data, $calltips[$i])) Then
		$calltips_data = StringRegExpReplace($calltips_data, $regex[0] & '.*', $calltips[$i])
	ElseIf Not StringInStr($calltips_data, $calltips[$i]) Then
		$calltips_data &= @CRLF & $calltips[$i]
	EndIf
Next

FileDelete($calltips_file)
FileWrite($calltips_file, $calltips_data)

; ==== keywords

Dim $keywords[24] = ['_WinUser_Add', _
		'_WinUser_AddToGroup', _
		'_WinUser_CreateGroup', _
		'_WinUser_Delete', _
		'_WinUser_DeleteFromGroup', _
		'_WinUser_DeleteGroup', _
		'_WinUser_GetAll', _
		'_WinUser_GetAllNames', _
		'_WinUser_GetComment', _
		'_WinUser_GetCountryCode', _
		'_WinUser_GetCountryName', _
		'_WinUser_GetFullName', _
		'_WinUser_GetLastLoginTime', _
		'_WinUser_GetSID', _
		'_WinUser_IsActive', _
		'_WinUser_IsAdmin', _
		'_WinUser_SetAll', _
		'_WinUser_SetActive', _
		'_WinUser_SetAdmin', _
		'_WinUser_SetComment', _
		'_WinUser_SetCountryCode', _
		'_WinUser_SetFullName', _
		'_WinUser_SetLoginScript', _
		'_WinUser_SetPassword']
$keywords_data = FileRead($keywords_file)
$udfs_old = StringRegExp($keywords_data, '(?s)au3.keywords.udfs=(.*?)au3.keywords.keywords', 3)
$udfs_old = $udfs_old[0]
$udfs = StringStripWS(StringRegExpReplace($udfs_old, '\\|	|_winuser_\w{1,20}|' & @CRLF, ''), 4)

$arr = StringSplit($udfs, ' ')

For $i = 0 To UBound($keywords) - 1
	If _ArraySearch($arr, StringLower($keywords[$i])) = -1 Then $udfs &= ' ' & StringLower($keywords[$i])
Next

$udfs_split = StringSplit($udfs, ' ')
$cnt = 0
$data = ''
For $i = 1 To $udfs_split[0]
	$data &= $udfs_split[$i] & ' '
	$cnt += 1
	If $cnt = 6 Then
		$data &= '\' & @CRLF & @TAB
		$cnt = 0
	EndIf
Next

$part1 = StringRegExp($keywords_data, '(?s)(.*?)au3.keywords.udfs=', 3)
$part1 = $part1[0]
$part2 = StringRegExp($keywords_data, '(?s)au3.keywords.keywords=(.*)', 3)
$part2 = $part2[0]

$data = $part1 & 'au3.keywords.udfs=' & $data & @CRLF & 'au3.keywords.keywords=' & $part2

FileDelete($keywords_file)
FileWrite($keywords_file, $data)

MsgBox(64, '_WinUser Highlighter', 'Операция успешно завершена!' & @CRLF & 'Патч создан для UDF _WinUser версии 2.6')

Снимок:
есть но не покажу :smile:

История версий:
26.03.2011 - первый релиз (версия 1.0)

27.03.2011 - обновление (версия 1.1)
Добавлено:
_WinUser_IsActive
_WinUser_IsAdmin
Исправлено:
Мелкие баги

8.07.2011 - обновление (версия 2.0)
Добавлено:
_WinUser_GetComment
_WinUser_GetFullName
_WinUser_GetLastLoginTime
_WinUser_SetComment
Изменено:
Способ работы с консольной программой (теперь - с помощью STDIN\STDOUT потоков)
Исправлено:
Мелкие баги

9.07.2011 - обновление (версия 2.1)
Добавлено:
_WinUser_GetSID от VladUs
Удалил пару лишних строк

11.07.2011 - обновление (версия 2.2)
Добавлено:
_WinUser_GetAllNames
_WinUser_GetCountryCode
_WinUser_GetCountryName
_WinUser_SetCountryCode
_WinUser_SetFullName
_WinUser_SetLoginScript
Изменено:
_WinUser_Add (небольшие изменения)

19.10.2011 - обновление (версия 2.3)
Добавлено:
_WinUser_GetAll - возвращает все параметры учетной записи в массиве
_WinUser_SetAll - устанавливает все параметры учетной записи
Поддержка английской версии Windows, автоматическое распознавание локали
Исправлено:
Ошибка в _WinUser_Add при создании пользователя без админских прав
Ошибка в патче для SCiTE
Немного почистил код

14.04.2012 - обновление (версия 2.4)
Добавлено:
_WinUser_AddToGroup - добавляет пользователя в группу
_WinUser_RemoveFromGroup - удаляет пользователя из группы
_WinUser_CreateGroup - создает группу
_WinUser_DeleteGroup - удаляет группу
Описание ко всем новым функциям и к ..._GetAll
Расширенный пример с MsgBox
Исправлено:
5 ошибок в коде (кавычки)
патч - теперь полностью рабочий, проверено на себе

15.08.2013 - обновление (версия 2.5)
Изменено:
Мелкие баги
Патч теперь полностью работает (и обладает некоторыми приятными плюшками...)
Небольшие изменения кода (уменьшен размер, удалены лишние переменные)
Исправлено:
Ошибка в SetAdmin при удалении прав администратора
Ошибка в SetLoginScript (был шанс, что функция всегда возвращала бы ошибку)
Ошибка в SetAll при удалении прав администратора
Ошибка в SetAll при возникновении ошибки (мог удалить учетную запись)

17.08.2013 - обновление (версия 2.6)
Добавлено:
Поддержка кириллицы во всех полях - имя, пароль, комментарий etc (нужны тесты!)
Изменено:
Для следующих функций второй параметр теперь опционален:
_WinUser_SetActive
_WinUser_SetAdmin
_WinUser_SetComment
_WinUser_SetCountryCode
_WinUser_SetLoginScript
Почти полностью переписаны функции _WinUser_GetAll, _WinUser_GetAllNames, _WinUser_GetFullName и _WinUser_GetComment
Исправлено:
_WinUser_SetComment всегда возвращал ошибку
_WinUser_GetAll, _WinUser_GetFullName и _WinUser_GetComment обрезали длинные комментарии и имена файлов

Источник: _WinUser - работа с пользователями Windows
Автор(ы): Sky-WaLkeR
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

Большое обновление.
Добавил несколько функций (см. историю версий)
Теперь справка в файле UDF на русском
Теперь вместо сохранения в файл используется StdIn\Out
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: _WinUser - работа с пользователями Windows

еще бы добавить тс и дс
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705

VladUs

Скриптер
Сообщения
621
Репутация
180
Re: _WinUser - работа с пользователями Windows

Sky-WaLkeR
Если хотите, можете добавить в библиотеку функцию, возвращающую SID учетной записи (иногда бывает необходимо).

Код:
Func _AccountToSid ($strName)
    
$strComputer = "." 
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") 
$colItems = $objWMIService.ExecQuery( "SELECT * FROM Win32_UserAccount WHERE Name ="  & "'"& $strName &"'" ) 
For  $objItem in $colItems 
    $Name = $objItem.Name
    $SID  = $objItem.SID
    Return $SID
Next
    
EndFunc


Параметры:
$strName - имя учетной записи

Возвращаемое значение:
Если успех, то возвращается SID, иначе возвращается 0

Пример :
Код:
ConsoleWrite (_AccountToSid ("администратор")& @CRLF)
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

Небольшое обновление.
Добавил функцию от VladUs, только переименовал - _WinUser_GetSID.
Удалил пару лишних строк.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

Обновление.
Добавил:
_WinUser_GetAllNames
_WinUser_GetCountryCode
_WinUser_GetCountryName
_WinUser_SetCountryCode
_WinUser_SetFullName
_WinUser_SetLoginScript
Немного переделал _WinUser_Add
Удалил дубли в спойлере "Функции", отсортировал по алфавиту.
Добавил патч для SciTE - подсветку функций (см. тему).
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

Насколько я знаю, их надо писать на VBScript (Visual Basic), либо bat-файл. Еще читал, что можно на JavaScript, но источник не достоверный :smile:
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

19.10.2011 - новая версия
Добавил:
_WinUser_GetAll - возвращает все параметры учетной записи в массиве
_WinUser_SetAll - устанавливает все параметры учетной записи
Поддержку английской версии Windows, распознает сам
Убрал ошибку в _WinUser_Add при создании пользователя без админских прав
Убрал ошибку в патче для SCiTE
Немного почистил код
 

Pavel

Новичок
Сообщения
125
Репутация
3
Re: _WinUser - работа с пользователями Windows

Господа, а может кто сделать аналог функции '_WinUser_SetAdmin', только чтобы добавлялась группа 'Remote Desktop Users'? :beer:
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser - работа с пользователями Windows

Что-то я забросил свою первую серьезную UDF... Надо исправляться :smile:
14.04.2012 - обновление
Добавил:
_WinUser_AddToGroup - добавляет пользователя в группу
_WinUser_RemoveFromGroup - удаляет пользователя из группы
_WinUser_CreateGroup - создает группу
_WinUser_DeleteGroup - удаляет группу
Описание ко всем новым функциям и к ..._GetAll
Расширенный пример с MsgBox
Исправил:
Опечатку в примере
5 ошибок в коде (кавычки)
патч - теперь полностью рабочий, проверено на себе

Насчет патча - код под спойлером (да и ехе по ссылке) был нерабочий, сейчас все исправил, обновил до последней версии UDF, все работает.
Пример сделал более подробным, с проверкой возвращаемых значений, MsgBox'ами, он охватывает больше функций чем старый (в т.ч. новые)
Начинал писать UDF давно, до сих пор проявляются лажи в коде (многого раньше не знал...), сейчас вроде не осталось...

Pavel
Понимаю, что запоздало, но лучше поздно, чем никогда... Не мог подойти к компьютеру...
Для этого можно использовать появившуюся функцию _WinUser_AddToGroup($имя, 'Remote Desktop Users').
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser UDF v2.5 - работа с учетными записями и группами Windows

Негоже оставлять ошибки в своих библиотеках, даже если прошел целый год :smile:
Небольшое обновление.
Исправил несколько довольно неприятных ошибок (см. историю версий), добавил наконец номер версии. Убрал пару очепяток в названиях функций, устранил пару багов. Обновил шапку.

Патч теперь ТОЧНО работает. Причем вполне неплохо - удаляет deprecated-функции (если таковые будут в будущем) и добавляет только те, которых еще нет. Его код стал заметно чище и лучше - все-таки я слегка улучшил свои знания с того времени...

В планах - тесты на Windows 8 (появилась под рукой машина с этой ОС), возможно - переделка структуры библиотеки и добавление функционала.

Если есть какие-то пожелания и предложения - с удовольствием выслушаю и попробую реализовать.
 

joiner

Модератор
Локальный модератор
Сообщения
3 046
Репутация
510
Re: _WinUser UDF v2.5 - работа с учетными записями и группами Windows

видимо проблема с кирилицей . смотри скрин
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
95
Re: _WinUser UDF v2.5 - работа с учетными записями и группами Windows

joiner
Ошибку понял, исправлю и залью новую версию через 5-10 минут в течение получаса (небольшая правка кода помимо этой проблемы). Буду признателен, если потестишь функции типа SetComment и SetFullName - попробуй установить русское имя и комментарий.
Код:
_WinUser_SetFullName('admin', 'Я русское имя')
MsgBox(0, '', _WinUser_GetFullName('admin'))


17.08.2013 - обновление (версия 2.6)
Добавлено:
Поддержка кириллицы во всех полях - имя, пароль, комментарий etc (нужны тесты!)
Изменено:
Для следующих функций второй параметр теперь опционален:
_WinUser_SetActive
_WinUser_SetAdmin
_WinUser_SetComment
_WinUser_SetCountryCode
_WinUser_SetLoginScript
Почти полностью переписаны функции _WinUser_GetAll, _WinUser_GetAllNames, _WinUser_GetFullName и _WinUser_GetComment
Исправлено:
_WinUser_SetComment всегда возвращал ошибку
_WinUser_GetAll, _WinUser_GetFullName и _WinUser_GetComment обрезали длинные комментарии и имена файлов

Патч обновлен, можете скачать и запустить (не забудьте перезагрузить SciTE).
Пример тоже чуть обновлен.

В планах - получение списка групп, в которых состоит пользователь.

joiner
Проблема должна быть решена, проверь пожалуйста.
 

joiner

Модератор
Локальный модератор
Сообщения
3 046
Репутация
510
теперь проблем с кодировкой нет. комменты тоже добавляются корректно.
 

mef-t

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

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

ЌҐ ­ ©¤Ґ­® Ё¬п Ї®«м§®ў ⥫п.

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

2
Данная учетная запись существует, но не активна. Возвращена функцией _WinUser_GetAllNames()
Наличие других значений кроме 0, 1, 2 портит результат.
 

mef-t

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

sss

Продвинутый
Сообщения
332
Репутация
95
Спасибо за багрепорт. Сегодня постараюсь решить первую проблему и посмотреть в сторону второй. Заодно проверю библиотеку на Windows 10.

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


Добавлено:
Сообщение автоматически объединено:

mef-t,
Странно. Только что запустил следующий код на Win8: (Гость неактивен)
Код:
MsgBox(0, '', _WinUser_IsAdmin("Гость"))

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

Выполнение от другого пользователя сделаю, серьезных сложностей с этим быть не должно.
 

mef-t

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

Это весь код.

А результат по спойлером:
ЌҐ ­ ©¤Ґ­® Ё¬п Ї®«м§®ў ⥫п.

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

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

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