Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Определение наличия прав в Windows 7 у текущего пользователя (http://forum.oszone.net/showthread.php?t=261833)

TERMINAL 04-06-2013 13:08 2162025

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

madmasles 04-06-2013 14:27 2162062

TERMINAL,
Это?
Код:

IsAdmin()

TERMINAL 04-06-2013 15:25 2162088

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

Iska 04-06-2013 19:31 2162234

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

madmasles 04-06-2013 20:05 2162255

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.

TERMINAL 05-06-2013 10:48 2162598

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

TERMINAL 21-06-2013 10:09 2171588

Помог скрипт
читать дальше »
$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

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

-TRM- 15-05-2014 19:56 2351867

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


Время: 19:56.

Время: 19:56.
© OSzone.net 2001-