Что нового

[Автоматизация] группу пользователей (Юзер или Админ)

Wulk@n

Новичок
Сообщения
34
Репутация
0
Привет подскажите пожалуйста !
Есть два файла userserver .exe и adminserver .exe
нужен скрит который будит определять группу пользователей (Юзер или Админ) и запускать файл Юзер-userserver .exe , Админ-adminserver .exe
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Пример:
Код:
#NoTrayIcon ;Спрятать иконку трея

$calc = "calc.exe"
$cmd = "cmd.exe"

If IsAdmin() Then
	Run($calc) ;Если есть права администратора
Else
	Run($cmd) ;Если нет прав администратора
EndIf
 
Автор
Wulk@n

Wulk@n

Новичок
Сообщения
34
Репутация
0
:scratch: Привет Благодарю Всех за ответы все работает но по правилам если включен UAC то админ то же что и Юзер
Может есть еще метод : на пример через реестр или службы ..
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Wulk@n
определять группу пользователей
IsAdmin() определяет права пользователя, а не принадлежность к группе. Попробуйте так
Код:
$UserDomain = "CompName" ; домен или имя компьютера
$UserName = "admin" ; имя пользователя
$User = ObjGet("WinNT://" & $UserDomain & "/" & $UserName & ",user")
If Not IsObj($User) Then
  ConsoleWrite("Не найден: " & $UserName & @CRLF)
  Exit
EndIf
For $Group In $User.Groups
  ConsoleWrite($Group.Name & @CRLF)
Next
 
Автор
Wulk@n

Wulk@n

Новичок
Сообщения
34
Репутация
0
InnI сказал(а):
Wulk@n
определять группу пользователей
IsAdmin() определяет права пользователя, а не принадлежность к группе. Попробуйте так
Код:
$UserDomain = "CompName" ; домен или имя компьютера
$UserName = "admin" ; имя пользователя
$User = ObjGet("WinNT://" & $UserDomain & "/" & $UserName & ",user")
If Not IsObj($User) Then
  ConsoleWrite("Не найден: " & $UserName & @CRLF)
  Exit
EndIf
For $Group In $User.Groups
  ConsoleWrite($Group.Name & @CRLF)
Next

По сути то , но в моём случае не сработает так как в этом примере нужно менять ; домен или имя компьютера ; имя пользователя
определять группу пользователей (Юзер или Админ) и запускать файл Юзер-userserver .exe , Админ-adminserver .exe
Не ужели это не выполнимо ? :shok: :-\ :scratch:
 
Автор
Wulk@n

Wulk@n

Новичок
Сообщения
34
Репутация
0
похоже я криворукий и не правильно понял скрипт :-[

Код:
#NoTrayIcon
$calc = "calc.exe"
$cmd = "cmd.exe"
$UserDomain = @ComputerName ; домен или имя компьютера
$UserName = @UserName ; имя пользователя
$User = ObjGet("WinNT://" & $UserDomain & "/" & $UserName & ",user")
If Not IsObj($User) Then
  Run($cmd)
  Exit
EndIf
For $Group In $User.Groups
  Run ($calc)
Next


и на юзере и на Админе c calc.exe
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Wulk@n
Код:
$Admin = IsAdminGroup()
If @error Then
  MsgBox(0, "Error", "Пользователь не найден")
  Exit
EndIf

If $Admin Then
  Run("cmd.exe")
Else
  Run("calc.exe")
EndIf

Func IsAdminGroup($UserName = @UserName, $UserDomain = @ComputerName)
  Local $User = ObjGet("WinNT://" & $UserDomain & "/" & $UserName & ",user")
  If Not IsObj($User) Then Return SetError(1, 0, -1)
  For $Group In $User.Groups
    If $Group.Name = "Администраторы" Then Return SetError(0, 0, 1)
  Next
  Return SetError(0, 0, 0)
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
InnI,
А зачем, в случае отсутствия ошибки, возвращать SetError(0, 0, 1) или SetError(0, 0, 0), если можно вернуть 1 и 0?
 
Верх