Войти

Показать полную графическую версию : Выполнение скрипта после Logoff


zhuk09
06-10-2014, 13:21
Всем добрый день!
Существует скрипт, который запускает 1С, запускается от локального пользователя (пробовал и от доменного). Но иногда пользователи не корректно завершает работу с 1С, и его сессия блокирует запуск скрипта (1C в монопольном режиме). Для этого прописал перед запуском скрипта Logoff
query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
"C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /m /DP:\2013 /Nadmin /P2584868
но после этого в шедулере появляется ошибка 0xC000013A.
На это MS заявляет что http://support.microsoft.com/kb/308558If the result code has the "C0000XXX" format, the task did not complete successfully (the "C" indicates an error condition). The most common "C" error code is "0xC000013A: The application terminated as a result of a CTRL+C".
Это не мой случай, иду дальше....
http://support.microsoft.com/kb/887572
When the Task Scheduler service runs a job by using a specific account, the Task Scheduler service tries to determine whether this account is also the account of the current logged-on user. If the account is that of the current logged-on user, the security context of the scheduled task is mapped to the security context of that user. This process directs scheduled jobs to that user's desktop.
Все эти пользователи имеют права безопасности - "Вход в качестве пакетного задания"
т.е как я понимаю ни от локального, ни от доменного пользователя запустить процесс не получится???
Посоветуйте как лучше сделать??!

zhuk09
06-10-2014, 17:27
Что заметил:
если пользователь,из под которого выполняется задача, находится в состоянии Logon, и скрипт делает процедуру Logoff
query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
то задача не выполняется!!!!
Но если в этот момент был Logoff, то задача успешно выполняется!)
С чем это может быть связано???!!

cameron
06-10-2014, 22:16
Но если в этот момент был Logoff, то задача успешно выполняется!)
С чем это может быть связано???!! »
с тем, что скрипт логофит сам себя ;)
P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи.

zhuk09
08-10-2014, 11:13
с тем, что скрипт логофит сам себя »
но тогда как же быть с этим
Но если в этот момент был Logoff, то задача успешно выполняется!) »
Т.е если пользователь Logoff то скрипт от его имени выполняется, а если logon а потом logoff - то не выполняется. Тогда не пойму Вашего ответа, типо скрипт логофит сам себя. Где тогда логика исходя из выше описанного.
Плюс еще добавлял в скрипт следующее
query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
timeout /t 15 /nobreak
"C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /m /DP:\2013 /Nadmin /P2584868

P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи. »
Согласен, это хорошая практика)))

cameron
08-10-2014, 11:21
zhuk09,
Согласен, это хорошая практика))) »
так начните использовать, а не ломать голову на пустом месте.

алсо, вместо логофа проще taskkill /F и всё, нет нужды ловить и логофить.

zhuk09
08-10-2014, 12:26
так начните использовать, а не ломать голову на пустом месте. »
Т.е получается, что если будет служубные учтёные записи, например domain\scripts » которая всегда будет Logoff, то скрипт будет от нее запускаться. Так???

вместо логофа проще taskkill /F и всё, нет нужды ловить и логофить. »
на зеленом форуме писал, что есть два способа:
1. taskkill
2. Logoff

Тут хочу разобраться с проблемой и понять ее суть! Т.к не ясен механизм.
Изначально думал что не хватает время между logoff и началом выполнения скрипта для 1С. Далее поставил задержку в 15 секунд timeoute /t 15, и все равно скрипт от пользователя который Logon---Logoff не выполняется.
Так по чему же он выполняется когда пользователь только Logoff. Ну и соответственно по best prectice о который говорили, состояние для учетной записи как я понимаю тоже должно быть Logoff.

cameron
08-10-2014, 13:15
которая всегда будет Logoff, то скрипт будет от нее запускаться. Так??? »
учётка будет заходить как пакетное задание, соот-но на терминальном сервере она не будет иметь статуса.
Изначально думал что не хватает время между logoff и началом выполнения скрипта для 1С. Далее поставил задержку в 15 секунд timeoute /t 15, и все равно скрипт от пользователя который Logon---Logoff не выполняется. »
может у вас там стоит что-нибудь типа "выполнять в контексте вошедшего пользователя" или "интерактивно" - мне сложно телепатировать.
я вам говорю 100% решение, которое позволяет не ломать голову над пустыми вопросами.

zhuk09
08-10-2014, 15:42
может у вас там стоит что-нибудь типа "выполнять в контексте вошедшего пользователя" или "интерактивно" - мне сложно телепатировать. »
Где это должно стоять????! Если в шедулере, то нет там ни таких параметров!!!!!
я вам говорю 100% решение, которое позволяет не ломать голову над пустыми вопросами. »
Я с Вами согласен, но хочется разобраться в сути проблемы))).. так сказать докопаться до истины)!
учётка будет заходить как пакетное задание, »
в какую группу в AD ее надо добавить что бы учетная запись имела права на "Вход в качестве пакетного задания"???!
Просто на КД у меня в ГП DDCP определено, какие учетные записи имеют право на "Вход в качестве пакетного задания".
Как дела обстоят тогда с рядовым сервером???!

zhuk09
10-10-2014, 08:52
P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи. »
тут мне ответили по поводу запуска скрипта для 1С
Еще раз - у 1С 7.7 ЕСТЬ глюк, он известен и при этом - ошибок в скриптах НЕ будет. Ибо если 1С выдает хотя одно окошко на экран и нет залогиненного юзера, под которым этом все запущено - все, труба.
Т.е как я понимаю вариант с best practice отпадает(((((




© OSzone.net 2001-2012