Разблокировать компьютер (Unlock Workstation)

Обсуждение программ nnCron и nnCron LITE

Разблокировать компьютер (Unlock Workstation)

Postby Light » Tue, 20 Jun 2006, 10:56

Народ как можно разблокировать рабочую станцию по WinXP автоматические в заданное время без участия пользователя?

Очень надо... :(
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby AlikasS » Wed, 28 Jun 2006, 06:43

дабы не пересказывать, посмотри в конференции
fido7.ru.nncron
http://www.fido-online.com/fidow/fido.d ... 694&-1&a10
7 и 9 мая 2005
Vadim Belko писал про возможность логиниться двумя вариантами.
сообщения под темой "unlockworkstation".
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby Light » Thu, 29 Jun 2006, 07:37

AlikasS,
Большое человеческое спасибо!!! :)
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby Light » Thu, 29 Jun 2006, 09:34

Простите за ламерский вопрос.

В эхоконференции приводится такой вот код:

#( test_unlock
WINAPI: OpenInputDesktop USER32.DLL
: DesktopName { hdsk -- a u }
128 ALLOCATE THROW >R
R@ 0!
0 SP@ 127 R@ 2 hdsk GetUserObjectInformationA
2DROP
R@ ASCIIZ> EVAL-SUBST

R> FREE DROP

;
USER-CREATE aUser 64 USER-ALLOT
USER-CREATE aPassword 64 USER-ALLOT
USER-VALUE npwd1
USER-VALUE npwd2

: UnlockWorkstation { a1 u1 a2 u2 \ hDsk hwl -- }
a1 u1 aUser ZPLACE a2 u2 aPassword ZPLACE
0 0 0 OpenInputDesktop TO hDsk
hDsk DesktopName S" Winlogon" COMPARE 0=
IF
GetCurrentThreadId GetThreadDesktop >R
hDsk SetThreadDesktop DROP
WIN-EXIST: "/(Снятие блокиpовки компьютеpа)|(Windows Logon)/"
IF
\ BEEP: 200 200
FOR-CHILD-WINDOWS: "DirectUIHWND"
;FOR-CHILD-WINDOWS
WIN-CHILD-HWND TO hwl
WinXP? hwl 0<> AND
IF
aUser ASCIIZ> S>NUM 1 MAX 0
DO
0 TO npwd1
FOR-CHILD-WINDOWS: "EDIT"
npwd1 1+ TO npwd1
;FOR-CHILD-WINDOWS
0 40 256 WIN-CHILD-HWND PostMessageA DROP \ клавиша down -> edit
PAUSE: 300
0 TO npwd2
FOR-CHILD-WINDOWS: "EDIT"
npwd2 1+ TO npwd2
;FOR-CHILD-WINDOWS
npwd1 npwd2 =
IF
0 40 256 hwl PostMessageA DROP \ клавиша down ->
DirectUI
THEN
PAUSE: 300
LOOP
0 13 256 hwl PostMessageA DROP \ клавиша enter -> DirectUI
THEN
FOR-CHILD-WINDOWS: "EDIT"
aUser 0 12 WIN-CHILD-HWND SendMessageA DROP \ user -> edit(1)
;FOR-CHILD-WINDOWS
aPassword 0 12 WIN-CHILD-HWND SendMessageA DROP \ password -> edit
0 13 256 WIN-CHILD-HWND PostMessageA DROP \ клавиша enter -> edit
THEN
R> SetThreadDesktop DROP
THEN

hDsk CloseDesktop DROP
aUser FREE DROP aPassword FREE DROP
;

SingleInstance
Rule: IsWorkstationLocked?
Action:
S" 2" S" pwd" UnlockWorkstation
)#



А как его собсвтенно запустить. Я выбираю выполнить скрипт. Ввожу этот текст. Nncron ругается на ошибку в строке WINAPI: OpenInputDesktop USER32.DLL.

Подскажите как скрипты такие запускаются и почему прога ругается.
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby Light » Thu, 29 Jun 2006, 12:37

Короче вроде как запускается, но не разлочивает он компьютера!!! :(
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby Yury Zhukov » Thu, 29 Jun 2006, 13:27

На всякий случай уточню: а логин и пароль в задаче правильный вписан?
Yury Zhukov
 
Posts: 243
Joined: Thu, 16 Jun 2005, 09:22
Location: Москва

Postby AlikasS » Thu, 29 Jun 2006, 14:10

Code: Select all
#( test_unlock
WINAPI: OpenInputDesktop USER32.DLL
: DesktopName { hdsk -- a u }
    128 ALLOCATE THROW >R
    R@ 0!
    0 SP@ 127 R@ 2 hdsk GetUserObjectInformationA
    2DROP
    R@ ASCIIZ> EVAL-SUBST
    R> FREE DROP
;
USER-CREATE aUser 64 USER-ALLOT
USER-CREATE aPassword 64 USER-ALLOT
USER-VALUE npwd1
USER-VALUE npwd2

: UnlockWorkstation { a1 u1 a2 u2 \ hDsk hwl -- }
    a1 u1 aUser ZPLACE  a2 u2 aPassword ZPLACE
    0 0 0 OpenInputDesktop TO hDsk
    hDsk DesktopName S" Winlogon" COMPARE 0=
    IF
      GetCurrentThreadId GetThreadDesktop >R
      hDsk SetThreadDesktop DROP
      WIN-EXIST: "/(Снятие блокиpовки компьютеpа)|(Windows Logon)/"
      IF
\        BEEP: 200 200
        FOR-CHILD-WINDOWS: "DirectUIHWND"
        ;FOR-CHILD-WINDOWS
        WIN-CHILD-HWND TO hwl
        WinXP? hwl 0<> AND
        IF
          aUser ASCIIZ> S>NUM 1 MAX  0
          DO
            0 TO npwd1
            FOR-CHILD-WINDOWS: "EDIT"
              npwd1 1+ TO npwd1
            ;FOR-CHILD-WINDOWS
            0 40 256 WIN-CHILD-HWND PostMessageA DROP \ клавиша down -> edit
            PAUSE: 300
            0 TO npwd2
            FOR-CHILD-WINDOWS: "EDIT"
              npwd2 1+ TO npwd2
            ;FOR-CHILD-WINDOWS
            npwd1 npwd2 =
            IF
              0 40 256 hwl PostMessageA DROP          \ клавиша down -> DirectUI
            THEN
            PAUSE: 300
          LOOP
          0 13 256 hwl PostMessageA DROP          \ клавиша enter -> DirectUI
        THEN
        FOR-CHILD-WINDOWS: "EDIT"
          aUser 0 12 WIN-CHILD-HWND SendMessageA DROP   \ user -> edit(1)
        ;FOR-CHILD-WINDOWS
        aPassword 0 12 WIN-CHILD-HWND SendMessageA DROP \ password -> edit
        0 13 256 WIN-CHILD-HWND PostMessageA DROP \ клавиша enter -> edit
      THEN
      R> SetThreadDesktop DROP
    THEN

    hDsk CloseDesktop DROP
    aUser FREE DROP aPassword FREE DROP
;

SingleInstance
\ Rule: IsWorkstationLocked? \ можно поставить свое условие
Action:
  S" 1" S" пароль_первого пользователя" UnlockWorkstation
)#

комп сам логиниться под пользователем который первый (верхний)
на экране приветствия.

для второго (с верху на экране приветствия) пользователя после
Action:
S" 2" S" пароль_второго_пользователя" UnlockWorkstation
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby Light » Fri, 30 Jun 2006, 07:23

AlikasS, у меня пара глупых, но важных для меня вопросов. Я только начинаю юзать Nncron, так что господа отнеситесь, пожалуйста, с пониманием.

1. Этот код работатет только если на мониторе экран приветствия с пользователями или при блокировке компа по Win+L он тоже работает. Собственно спрашиваю, поскольку мне надо разблокировать залоченый комп по Win+L.

2. Как этот скрипт сработает если не один профиль пользователя еще не загружен, или nncron запускает задачи в качестве процесса. Можно описать подробнее как создать такую задачу в nncron.

3. Самый глупый вопрос, но все же. Как вообще запустить этот скрипт, не без участия пользователя. Я имею в виду, если поместить его в отдельный файл, nncron не позволяет назначить ему времы выполнения. Может это как-то через Bat файл делается. Какая команда в Bat файле запускает этот скрипт на исполнение.

Буду очень благодарен за ответы.
Заранее большое спасибо тебе, AlikasS и все остальным.
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby AlikasS » Sun, 02 Jul 2006, 07:02

Light wrote:AlikasS, у меня пара глупых, но важных для меня вопросов. Я только начинаю юзать Nncron, так что господа отнеситесь, пожалуйста, с пониманием.
1. Этот код работатет только если на мониторе экран приветствия с пользователями или при блокировке компа по Win+L он тоже работает. Собственно спрашиваю, поскольку мне надо разблокировать залоченый комп по Win+L.
2. Как этот скрипт сработает если не один профиль пользователя еще не загружен, или nncron запускает задачи в качестве процесса. Можно описать подробнее как создать такую задачу в nncron.
3. Самый глупый вопрос, но все же. Как вообще запустить этот скрипт, не без участия пользователя. Я имею в виду, если поместить его в отдельный файл, nncron не позволяет назначить ему времы выполнения. Может это как-то через Bat файл делается. Какая команда в Bat файле запускает этот скрипт на исполнение.
Буду очень благодарен за ответы.
Заранее большое спасибо тебе, AlikasS и все остальным.


1. задача работает независимо заходил ли пользователь и потом заблокировал по win+L или система только что стартовала.
Главное что бы был включен экран приветствия и что бы не требовалось "ctrl+alt+del" перед выбором пользователя и ввода пароля.
2. просто вставь пример в tab файл, можешь добавить свои условия на старт задачи ( например "WatchDrive:" на вставление флешки или просто по времени, смотри help->работа с программой->задача-> спецификация времение и/или спецификация события и/или условия запуска задачи).
для старта задачи нет необходимости в пользователе :-).
3. а зачем его помещать в отдельный файл?
хотя конечно можно, см. help->работа с программой->задача->способы запуска задачи->запуск задачи в качестве отдельного скрипта

P.S. есть еще вариант для login когда отключен экран приветствия,
т.е необходимо непосредственно вводить имя пользователя и пароль.
но он (у меня например) работает только когда еще не один пользователь не вошел в систему. Т.е. осуществить первоначальный вход можно, а вот разлочить после Win+L у меня не получилось.
удачи вообщем в экспериментах!!
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby Light » Tue, 04 Jul 2006, 10:05

Спасибо за ясные ответы.

Жалко, что нельзя разлочить машину без экрана приветствия, залоченную по Win+L.
Может я что-то неправильно понимаю, поясни. Ты имеешь в виду экран приветствия (синий такой) с выбором пользователей.

Просто у меня по Win+L в центре экрана появляется окошко - система заблокирована. 2 поля - имя пользователя и пароль. С этим окошком можно разлочить систему?
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby AlikasS » Wed, 05 Jul 2006, 01:11

попробуй вот этот вариант,
делали для случая, когда экрана приветствия нет,
т.е. надо вводить имя и пароль пользователя.
Code: Select all
#( test_unlock2
\ NoActive
WINAPI: OpenInputDesktop USER32.DLL
: DesktopName { hdsk -- a u }
    128 ALLOCATE THROW >R
    R@ 0!
    0 SP@ 127 R@ 2 hdsk GetUserObjectInformationA
    2DROP
    R@ ASCIIZ> EVAL-SUBST
    R> FREE DROP
;
USER-CREATE aUser 64 USER-ALLOT
USER-CREATE aPassword 64 USER-ALLOT
: UnlockWorkstation { a1 u1 a2 u2 \ hDsk -- }
    a1 u1 aUser ZPLACE  a2 u2 aPassword ZPLACE
    0 0 0 OpenInputDesktop TO hDsk
    hDsk DesktopName S" Winlogon" COMPARE 0=
    IF
      GetCurrentThreadId GetThreadDesktop >R
      hDsk SetThreadDesktop DROP
      WIN-EXIST: "/(Снятие блокиpовки компьютеpа)|(Windows Logon)|(Вход в Windows)/"
      IF
\        BEEP: 200 200
        WinXP?
        IF
          FOR-CHILD-WINDOWS: "DirectUIHWND"
          ;FOR-CHILD-WINDOWS
          0 40 256 WIN-CHILD-HWND PostMessageA DROP \ клавиша down
          PAUSE: 500
        THEN
        FOR-CHILD-WINDOWS: "EDIT"
        aUser 0 12 WIN-CHILD-HWND SendMessageA DROP     \ user
        ;FOR-CHILD-WINDOWS
        aPassword 0 12 WIN-CHILD-HWND SendMessageA DROP \ password
        0 13 256 WIN-CHILD-HWND PostMessageA DROP   \ клавиша enter
      THEN
      R> SetThreadDesktop DROP
    THEN

    hDsk CloseDesktop DROP
    aUser FREE DROP aPassword FREE DROP
;

HyperActive
SingleInstance
NoLog
\ Rule: IsWorkstationLocked?
Action:
  S" Administrator" S" пароль_админа" UnlockWorkstation \ здесь твои имя_пользователя и пароль
)#

у меня получилось по этому варианту только входить в систему, а разблокировать после Win+L нет :-(

другой вариант: экран приветствия включить и использовать вариант
который размещал в форуме 29.06.06
http://www.nncron.ru/forums/viewtopic.php?p=5316#5316
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Postby Light » Wed, 05 Jul 2006, 10:39

Да наверно так и буду делать. Спасибо огромное за помощь.

Действитель залоченый компьютер по wn+L не получается разблокировать. У мелокомягких как то там мудрено сделано. Дело в том, что например в планировщике MacroScheduler 8 такая возможность есть. Но у них там для этих целей отдельный экзешник написан. И MacroScheduler триальная. Вот такие дела. Буду пробовать все таки работать с Nncron'ом.
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby Lynx » Wed, 05 Jul 2006, 12:17

Если экран приветствия отключен, то там надо получается сначала нажать Ctrl+Alt+Del и только потом вводить. Так?
А в этом коде нажатия Ctrl+Alt+Del нема. Вот если добавить - тогда возможно получится :)
User avatar
Lynx
 
Posts: 321
Joined: Thu, 04 May 2006, 20:07
Location: Уфа

Postby Light » Wed, 05 Jul 2006, 14:25

AlikasS, спасибо огромное все заработало, когда я включил быстрое переключение между пользователями. NNcron разлочивает все суперским образом. Еще раз огромное спасибо. Работает скрипт от 28 июня.
Light
 
Posts: 8
Joined: Tue, 20 Jun 2006, 10:27

Postby Ophianthe » Mon, 24 Jul 2006, 06:07

maybe... :)
Ophianthe
 
Posts: 1
Joined: Mon, 24 Jul 2006, 06:07

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest