Что нового

Запуск от имени Администратора домена.

ulan44

Знающий
Сообщения
55
Репутация
8
Скрипт выполняет исполняемые файлы от имени администратора домена. Для чего нужно ?
Для простоты установки приложений из под обычного пользователя, чтоб не переключаться между пользователем и администратором.

Код:
$user = 'Имя пользователя' ; имя пользователя администратора домена
$domain = 'Имя домена'		; имя домена
$etalon = 'пароль'         ; пароль
$secret = 'ктулху'		 ; секретное слово

$time = 'RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl' 			; настройка даты и времени
$divace = 'RunDll32.exe devmgr.dll DeviceManager_Execute'				; диспетчер устройств
$print = 'rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter' 			; установка принтера
$taskm = 'taskmgr'														; диспетчер задач
$regedit = @WindowsDir & '\regedit.exe'									; реестр
$msconfigxp = @WindowsDir & '\pchealth\helpctr\binaries\msconfig'		; конфигурация системы windows xp
$msconfig7 = 'msconfig'													; конфигурация системы windows 7
$cmd = 'cmd'															; командная сторока

$pass = InputBox("Секретный пароль","В ведите пароль от " & $user, "", "*", 170, 150)
If @error Then Exit
   
   If $etalon = $pass Then

$message = "Выберите исполняемый файл для запуска от имени администратора домена"
   $var = FileOpenDialog($message, @DesktopDir & "\", "Все форматы (*.*)")
     If @error Then Exit
	   $Exp = StringRegExpReplace($var, '.*\.(\S+)', '\1')

	   If @DesktopDir & "\" & $secret = $var Then
		  $command = InputBox("Системные команды", "Доступны следующие команды:" & @CRLF & @CRLF & "cmd" & @TAB & @TAB &"командная строка" & @CRLF & "msconfig" & @TAB & "конфигурация системы" & @CRLF & "regedit" & @TAB & @TAB &"реестр" & @CRLF & "task" & @TAB & @TAB &"диспетчер задач" & @CRLF & "divace" & @TAB & @TAB &"диспетчер устройств"& @CRLF & "print" & @TAB & @TAB &"установка принтера" & @CRLF & "time" & @TAB & @TAB &"настройка даты", "", "", 250, 240)

			If "time" = $command Then
				  RunAs($user, $domain, $pass, 0, $time)
			   ElseIf "divace" = $command Then
				  RunAs($user, $domain, $pass, 0, $divace)
			   ElseIf "print" = $command Then
				  RunAs($user, $domain, $pass, 4, $print)
			   ElseIf "task" = $command Then
				  RunAs($user, $domain, $pass, 4, $taskm)
			   ElseIf "cmd" = $command Then
				  RunAs($user, $domain, $pass, 0, $cmd)
			   ElseIf "regedit" = $command Then
				  RunAs($user, $domain, $pass, 0, $regedit)

			   ElseIf "msconfig" = $command Then
				  If "Win_XP" = @OSVersion Then
					 RunAs($user, $domain, $pass, 0, $msconfigxp)
				  Else
					 RunAs($user, $domain, $pass, 0, $msconfig7)
				  EndIf
			   Else
				  Exit
			   EndIf

			   ElseIf "msi" = $Exp Then
				  RunAs($user, $domain, $pass, 0, 'msiexec /i ' & '"'& $var &'"')
			   Else
				  RunAs($user, $domain, $pass, 0, $var)
		  EndIf
Else
   MsgBox(4096,"Error Pass","Дальше будем подбирать пароль? O_o")
EndIf


Критика и пожелания тоже приветствуются. 8)
Чтобы получить доступ к командам нужно в поле обзора ввести секретное слово и нажать ОК.
 
Автор
U

ulan44

Знающий
Сообщения
55
Репутация
8
Немного подправил код теперь и msi пакеты устанавливает, чтоб еще такого добавить :scratch:
 
Автор
U

ulan44

Знающий
Сообщения
55
Репутация
8
немного подправил код. теперь много чего доступно из под обычного смертного.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
$user = 'Имя пользователя' ; имя пользователя администратора домена
$domain = 'Имя домена' ; имя домена
$etalon = 'пароль' ; пароль
$secret = 'ктулху' ; секретное слово

$time = 'RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl' ; настройка даты и времени
$divace = 'RunDll32.exe devmgr.dll DeviceManager_Execute' ; диспетчер устройств
$print = 'rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter' ; установка принтера
$taskm = 'taskmgr' ; диспетчер задач
$regedit = @WindowsDir & '\regedit.exe' ; реестр
$msconfigxp = @WindowsDir & '\pchealth\helpctr\binaries\msconfig' ; конфигурация системы windows xp
$msconfig7 = 'msconfig' ; конфигурация системы windows 7
$cmd = 'cmd' ; командная сторока

$pass = InputBox("Секретный пароль", "В ведите пароль от " & $user, "", "*", 170, 150)
If @error Then Exit

If $etalon = $pass Then

	$message = "Выберите исполняемый файл для запуска от имени администратора домена"
	$var = FileOpenDialog($message, @DesktopDir & "\", "Все форматы (*.*)")
	If @error Then Exit
	$Exp = StringRegExpReplace($var, '.*\.(\S+)', '\1')

	If @DesktopDir & "\" & $secret = $var Then
		$command = InputBox("Системные команды", "Доступны следующие команды:" & @CRLF & _ 
			@CRLF & "cmd" & @TAB & @TAB & "командная строка" & @CRLF & "msconfig" & @TAB & _
			"конфигурация системы" & @CRLF & "regedit" & @TAB & @TAB & "реестр" & @CRLF & "task" & @TAB & _
			@TAB & "диспетчер задач" & @CRLF & "divace" & @TAB & @TAB & "диспетчер устройств" & @CRLF & "print" & @TAB & _
			@TAB & "установка принтера" & @CRLF & "time" & @TAB & @TAB & "настройка даты", "", "", 250, 240)

		Switch ($command)
			Case "time"
				RunAs($user, $domain, $pass, 0, $time)
			Case "divace"
				RunAs($user, $domain, $pass, 0, $divace)
			Case "print"
				RunAs($user, $domain, $pass, 4, $print)
			Case "task"
				RunAs($user, $domain, $pass, 4, $taskm)
			Case "cmd"
				RunAs($user, $domain, $pass, 0, $cmd)
			Case "regedit"
				RunAs($user, $domain, $pass, 0, $regedit)
			Case "msconfig"
				If "Win_XP" = @OSVersion Then
					RunAs($user, $domain, $pass, 0, $msconfigxp)
				Else
					RunAs($user, $domain, $pass, 0, $msconfig7)
				EndIf
		EndSwitch

		If "msi" = $Exp Then
			RunAs($user, $domain, $pass, 0, 'msiexec /i ' & '"' & $var & '"')
		Else
			RunAs($user, $domain, $pass, 0, $var)
		EndIf
	Else
		Exit
	EndIf
Else
	MsgBox(4096, "Error Pass", "Дальше будем подбирать пароль? O_o")
EndIf


Я бы переделал так.
 

beliy

Продвинутый
Сообщения
372
Репутация
72
RunAS не рекомендуется использовать в корпоративной среде из соображений безопасности, подробнее по ссылке - http://admilink.narod.ru/admilink.htm#WhyNotRunAs
В большинстве случаев есть более эффективные методы - например можно изначально войти под админом по rdp и делать что надо не вставая с рабочего места. Также не забываем про групповые политики, с помощью которых можно полностью автоматизировать процесс настройки пк пользователей. В крайнем случае если нужно что то сделать от имени админа на пк пользователя - используйте учетку локального админа...
 
Автор
U

ulan44

Знающий
Сообщения
55
Репутация
8
1 - В статье описано как не надо пользоваться RunAs штатными средствами windows
2 - Если Вы смотрели скрипт, то там видно что при каждом запуске надо ввести пароль администратора.
3 - Если пароль администратора в АД изменился то скрипт автоматом уже не робота способен.
4 - Пароль от админа знает только админ ;)
и 5 - Данный скрипт писался для админа а не для пользователей.

А от того, что он использует сторонние программы, можно с таким же успехом сделать все тоже самое, что и в его статье "Почему не рекомендуется использовать RunAs"
 

beliy

Продвинутый
Сообщения
372
Репутация
72
Извиняюсь что с опозданием написал - только увидел ответ. Добавлю тогда еще несколько своих комментариев:
1) В скрипте в открытом виде хранится пара логин/пароль доменного админа. А все мы знаем насколько устойчивы скрипты Autoit к декомпиляции.
2) Как уже писал для любых целей в корпоративной среде существуют более надежные способы достичь результата...
3)
Если пароль администратора в АД изменился то скрипт автоматом уже не робота способен.

Да но в этом случае ,скорей всего он обновится и в скрипте(смотрим снова п.1 ;)).
Да и в некоторых случаях менять может быть уже поздно...

4)
Пароль от админа знает только админ

... или тот кто знает пароль админа;)

5)
Данный скрипт писался для админа а не для пользователей

читаем п.2
 

sanf

Новичок
Сообщения
30
Репутация
0
А можно добавить запуск explorer'a ?
P.S. Windows 7
 
Автор
U

ulan44

Знающий
Сообщения
55
Репутация
8
explorer я так не нашел описание как запустить, можно запустить альтернативу типа Xplorer2 portable если надо можно его вписать.
 
Верх