Циклится запуск bat при запуске из 1С #779110


#0 by int88
Из 1С запускается батник методом ЗапуститьПриложение или КомандаСистемы и начинается бесконечное открытие окон CMD. При запуске вручную все нормально. Смысл - программно зарегистрировать библиотеку ROM.dll в ОС под правами администратора. Сам батник содержит следующий код: off :: BatchGotAdmin :------------------------------------- REM  --> Check for permissions REM --> If error flag set, we do not have admin. if '%errorlevel%' NEQ '0' (     echo Requesting administrative privileges... :UACPrompt
#1 by Fish
А код 1С?
#2 by int88
там все хорошо, правда :)
#3 by kosts
А имя файла батника какое?
#4 by int88
если не трудно, попробуйте воспроизвести. Зарегистрируйте какую-нибудь dll (например comcntr.dll) из под 1С батником, который я привел выше.
#5 by int88
RegROM.bat. Про нюанс с именем знаком.
#6 by Рэйв
все беды всегда от goto :-)
#7 by Fish
Если при запуске вручную всё нормально, то косяк не в батнике, а в коде 1С.
#8 by kosts
Попробуй глянь, что в файл getadmin.vbs выводится
#9 by int88
Функция запуска батника вызывается не в цикле. Текст батника хранится в общем макете.
#11 by kosts
Ну вот и цикл бесконечный REGROM.BAT вызывает REGROM.BAT. Условие выхода из зацикленности не срабатывает
#12 by int88
Мне кажется что после выполнения getadmin.vbs должно меняться значение errorlevel чтобы сработало условие и выполнение перешло на метку gotAdmin. В ручном режиме оно меняется (сначала =5, потом =0), а при запуске из 1С оно сначала =5, а потом бесконечно =2.
#13 by kosts
Это 2 не спроста.
#14 by kosts
А ты вручную батник запускаешь каким образом? В какой папке находишься? Как способ попробовать, может поможет, а может и нет: Разыщи синтаксис что бы запустить команду в батнике таким образом, что бы выполнение батника ждало окончания выполнения команды  и подставь в >nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
#15 by int88
батник запускаю руками, на раб.столе лежит, и из временной папки %TEMP% запускал, все отрабатывает. errorlevel = 2 означает что система не может найти указанный батник для запуска от имени пользователя, но он там есть . Не понял, сделать ожидание окончания выполнения команды? start /wait "%temp%getadmin.vbs"?
#16 by int88
С этим батником отработало. @Echo Off Setlocal :: First check if we are running As Admin/Elevated FSUTIL dirty query %SystemDrive% >nul if %errorlevel% EQU 0 goto START ::Create and run a temporary VBScript to elevate this batch file    Set _batchFile=%~s0    :: double up any quotes :START :: set the current directory to the batch file location cd /d %~dp0 :: Place the code which requires Admin/elevation below start /wait regsvr32 /s %TEMP%ROM.dll
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С