Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Определение наличия прав в Windows 7 у текущего пользователя

Ответить
Настройки темы
[решено] Определение наличия прав в Windows 7 у текущего пользователя

Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


Здравствуйте, нужно узнать (через реестр или другими методами), какие права имеет текущий пользователь работающий в системе (административные или другие) если скрипт работает без #RequireAdmin. Реально ? Заранее спасибо.

-------
Автоматизация прежде всего....


Отправлено: 13:08, 04-06-2013

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


TERMINAL,
Это?
Код: Выделить весь код
IsAdmin()

Отправлено: 14:27, 04-06-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


madmasles, У меня включён UAC и скрипт стартует без #RequireAdmin, а IsAdmin() всегда, в таком случае, выдаёт ответ 0 (нуль) под любыми правами. Есть ещё идейки ?

-------
Автоматизация прежде всего....


Отправлено: 15:25, 04-06-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


TERMINAL, и что не так? Разве не это Вы хотели получить?

Отправлено: 19:31, 04-06-2013 | #4


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


TERMINAL,
А если так? У меня работает.
Код: Выделить весь код
ConsoleWrite(_WinAPI_IsUserAdmin() & @LF)

Func _WinAPI_IsUserAdmin()
    Local $a_Res = DllCall('setupapi.dll', 'bool', 'IsUserAdmin')
    If @error Then Return SetError(1, 0, -1)
    Return $a_Res[0]
EndFunc   ;==>_WinAPI_IsUserAdmin
Цитата TERMINAL:
У меня включён UAC и скрипт стартует без #RequireAdmin, а IsAdmin() всегда, в таком случае, выдаёт ответ 0 (нуль) под любыми правами. »
У меня также включен UAC, и скрипт стартует без #RequireAdmin, но IsAdmin() возвращает 1.

Последний раз редактировалось madmasles, 04-06-2013 в 22:08.


Отправлено: 20:05, 04-06-2013 | #5


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


madmasles, тоже возврат 0 под админ-правами, а если запустить от имени администратора-тогда 1... (этот вариант не подходит))
Суть какая-узнать, без всяких запросов и подтверждений запуска файла, наличие прав у текущего пользователя. Если это права Администратора, тогда управление передаётся другому файлу (в котором уже срабатывает #RequireAdmin) и пользователь подтверждает его выполнение. Если же пользователь обыкновенный, то нечего даже и стартовать т.к. даже запуск от прав Администратора ни к чему хорошему не приведёт (скрипт у меня нормально работает только под админ-правами). И вот этот файл (который определяет наличие прав) находится в автозагрузке-не охота чтобы он каждый раз спрашивал разрешение на запуск если у пользователя нет прав.

-------
Автоматизация прежде всего....


Отправлено: 10:48, 05-06-2013 | #6


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


Помог скрипт
читать дальше »
$sUser = @UserName

$objADSI=ObjGet("WinNT://./"&$sUser)
$obj = $objADSI.Groups
$temp = ""
For $element In $obj
$temp &= $element.Name & @CRLF
Next
MsgBox(0, "Членство в группах", "Пользователь <" & $sUser & "> принадлежит к группе:" & @CRLF & $temp)

#include <Array.au3>
$sStartUser = @UserName
MsgBox(0, "Запуск от имени", "Пользователь: " & $sStartUser & @CRLF & "Группа: " & GroupInfo($sStartUser))

Dim $Array[1]
$Container=ObjGet("WinNT://.")
_ArrayAdd( $Array,"User")
$Container.Filter = $Array
$Info = ""
For $User in $Container
$users_d = $User.Name
$sUser = $User.Name
$Info &= "Пользователь: " & $users_d & " ::: Группа: " & GroupInfo($sUser) & @CRLF
Next
MsgBox(0, "Пользователи и группы", $Info)

Func GroupInfo($sUser)
$objADSI=ObjGet("WinNT://./"&$sUser)
$obj = $objADSI.Groups
$InfoGroup = ""
For $element In $obj
$InfoGroup &= $element.Name
Next
If $InfoGroup = "" Then
$InfoGroup = "Нет группы"
EndIf
Return $InfoGroup
EndFunc

правда, чуть подкорректировал и улучшил под себя.

-------
Автоматизация прежде всего....


Отправлено: 10:09, 21-06-2013 | #7


Старожил


Сообщения: 352
Благодарности: 44

Профиль | Отправить PM | Цитировать


На Windows 8.1 варианты от madmasles и TERMINAL уже не работают. Есть варианты ?

Последний раз редактировалось -TRM-, 16-05-2014 в 17:59.


Отправлено: 19:56, 15-05-2014 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Определение наличия прав в Windows 7 у текущего пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Определение наличия пробелов в строке TERMINAL AutoIt 2 27-10-2012 13:09
Доступ - Ограничение прав пользователя в windows XP алдарик Microsoft Windows 2000/XP 2 11-01-2012 04:56
[решено] Имя текущего пользователя в Windows SANIOK_AV Хочу все знать 10 28-09-2011 19:01
CMD/BAT - [решено] Определение атрибута файла & проверка наличия процесса user_123 Скриптовые языки администрирования Windows 10 19-11-2010 16:15
[решено] Определение наличия рисунка System Failure Вебмастеру 4 15-02-2009 01:02




 
Переход