Что нового

Регистрация dll по сети

Tuxzer92

Новичок
Сообщения
65
Репутация
0
Здравствуйте. После обновления платформы 1с на новую версию, нужно регистрировать новую dll - comcntr.dll, которая лежит в расшаренном каталоге на сервере 1с - fs-1c. Доступ к этой шаре есть у моей доменной учетки ovt111.
Хочу сделать скрипт, который будет запускаться локально на компьютере и выполнять регистрацию dll.
Проблемы:
Регистрацию dll нужно проводить от имени локального администратора компьютера(пароли разные. Поэтому выводить запрос на ввод пароля), а подключаться к шаре от имени другой учетки(доменной): ovt111 + каталоги с версиями 1c также меняются. Как это реализовать?
PS: права доменного админа эникеям не дают.
Наработка:
Код:
#include <WinNet.au3>
$host="server3"
$Path="\\"& $host & "\1cv8"
$sPath = FileSelectFolder('Выберите каталог с нужной платформой ', $Path, 3)
$sPath=$sPath & "\bin\"
$DllFile=$sPath & "comcntr.dll"
;MsgBox(0,"",$sPath)
MsgBox(0,"",$DllFile)

$sUsername = 'ovt111'
$sPassword = '789123'

RunWait(@ComSpec & " /c " & "net use \\server3\1cv8 user:fgup-ycct6\ovt111", "")

$sUserName = "Администратор"
$sCMD = "regsvr32 " & $DLLFile
Do
   If (@error == 0) Then
	  $msg = "Введите пароль:"
   Else
	  $msg = "Неправильно, повторите:"
   EndIf
	$sPass = InputBox("Ввод пароля", $msg, "", "*")
	If (@error = 1) Then
	   Exit
    EndIf
	RunAs($sUserName, @ComputerName, $sPass, 0, $sCMD)
 Until @error = 0

не работает, так как у пользователя, под которым запускаю скрипт, нет прав на шару.
 
Автор
T

Tuxzer92

Новичок
Сообщения
65
Репутация
0
Отвечу сам себе )
Решение:
Код:
#cs
Скрипт, для регистрации comcntr.dll
Дата начала разработки:
05.10.17г.
#ce
#include <File.au3>
$Server1="server3"
$Server2="fs-1c"
$Header="RegCom v.1.0"
If Ping($Server1,1) Then
$Host=$Server1
ElseIf Ping($Server2,1) Then
$Host=$Server2
Else
MsgBox(0,$Header,$Server1 & "и" & $Server2 & "не пингуются! Выход.")
Exit
EndIf

$Path="\\"& $Host & "\1cv8"
$sPath = FileSelectFolder($Header & ' - Выберите каталог с нужной платформой', $Path, 3)
if @error = 1 then
Exit
EndIf
$sPath=$sPath & "\bin\"
$DllFile=$sPath & "comcntr.dll"
$sUserName = "Администратор"

$loginmsg=@CRLF&@CRLF &"Введите логин"
$passmsg=@CRLF&@CRLF &"Введите пароль"
$msginputbox="Введите логин и пароль от доменной учетной записи:"
 Do
   If (@error == 0) Then
	  $msg = $msginputbox
    Else
	  $msg = "Неправильно, повторите:"
   EndIf
   $login = InputBox($Header, $msg & $loginmsg,"fgup-ycct6\","")
	$Pass = InputBox($Header, $msg & $passmsg, "", "*")
	If (@error = 1) Then
	   Exit
    EndIf
    $CMD2=@ComSpec & " /c " & "net use " & $Path & " /user:" & $login & " " & $Pass  & " && net use /delete " & $Path & " && pause"
	MsgBox(0,$Header,$CMD2)
	RunWait($CMD2)
 Until @error = 0


Do
   If (@error == 0) Then
	  $msg2 = "Введите пароль от локальной учетной записи администратора:"
   Else
	  $msg2 = "Неправильно, повторите:"
   EndIf
	$sPass = InputBox($Header, $msg2, "", "*")
	If (@error = 1) Then
	   Exit
    EndIf
    $CMD=@ComSpec & " /c " & "net use " & $Path & " /user:" & $login & " " & $Pass & " && regsvr32 " & $DllFile  & " && net use /delete " & $Path & " && pause "
	MsgBox(0,$Header,$CMD)
	RunAsWait($sUserName, @ComputerName, $sPass, 0, $CMD)
 Until @error = 0
 
Верх