-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Определение наличия прав в Windows 7 у текущего пользователя
Здравствуйте, нужно узнать (через реестр или другими методами), какие права имеет текущий пользователь работающий в системе (административные или другие) если скрипт работает без #RequireAdmin. Реально ? Заранее спасибо.
|
madmasles, У меня включён UAC и скрипт стартует без #RequireAdmin, а IsAdmin() всегда, в таком случае, выдаёт ответ 0 (нуль) под любыми правами. Есть ещё идейки ?
|
TERMINAL, и что не так? Разве не это Вы хотели получить?
|
TERMINAL,
А если так? У меня работает.
Цитата:
Цитата TERMINAL
У меня включён UAC и скрипт стартует без #RequireAdmin, а IsAdmin() всегда, в таком случае, выдаёт ответ 0 (нуль) под любыми правами. »
|
У меня также включен UAC, и скрипт стартует без #RequireAdmin, но IsAdmin() возвращает 1.
|
madmasles, тоже возврат 0 под админ-правами, а если запустить от имени администратора-тогда 1... (этот вариант не подходит))
Суть какая-узнать, без всяких запросов и подтверждений запуска файла, наличие прав у текущего пользователя. Если это права Администратора, тогда управление передаётся другому файлу (в котором уже срабатывает #RequireAdmin) и пользователь подтверждает его выполнение. Если же пользователь обыкновенный, то нечего даже и стартовать т.к. даже запуск от прав Администратора ни к чему хорошему не приведёт (скрипт у меня нормально работает только под админ-правами). И вот этот файл (который определяет наличие прав) находится в автозагрузке-не охота чтобы он каждый раз спрашивал разрешение на запуск если у пользователя нет прав.
|
Помог скрипт
читать дальше »
$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
правда, чуть подкорректировал и улучшил под себя.
|
На Windows 8.1 варианты от madmasles и TERMINAL уже не работают. Есть варианты ?
|
Время: 19:56.
© OSzone.net 2001-