1

Тема: AHK: Событие удаления пароля Windows при завершении работы Windows

Моя программа на AHK при запуске устанавливает пароль для Windows, что бы я мог заходить с Android устройства по сети WiFi через ES Explorer в расшаренные папки на ПК, потому как без пароля на XP соединится не удается.
А при завершении работы Windows мне надо что бы этот "временный пароль" удалялся..

Этот скрипт по идеи должен запускать net.exe и удалять пароль, но вместо этого выскакивает какая то ошибка запуска "net.exe" и пароль не удаляется, после воспроизводится звук "SoundPlay, *64" и Windows завершает работу.

DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
Return

WM_QUERYENDSESSION(wParam, lParam)
{
    ENDSESSION_LOGOFF = 0x80000000
    if (lParam & ENDSESSION_LOGOFF)  ; User is logging off.
        EventType = Logoff
    else  ; System is either shutting down or restarting.
        EventType = Shutdown

    if EventType = Shutdown
    {
        ifExist, D:\Папка на моем ПК
        {
            RunWait, net.exe user %A_UserName% "" ;, , Hide
            SoundPlay, *64
        }
        Return 1 ;Завершить true/1, отмена false/0
    }
}
return

Как можно сделать что бы эта команда срабатывала при завершении работы Windows?

RunWait, net.exe user %A_UserName% "", , Hide

Вне данного примера скрипта эта команда на моем ПК выполняется отлично!

2 (изменено: Alectric, 2015-01-03 20:54:59)

Re: AHK: Событие удаления пароля Windows при завершении работы Windows

Проще всего сделать автоматический вход по постоянному паролю.
Далается это в реестре:


User=Андрей
Password=тетриандох

RegWrite,REG_SZ,HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,DefaultUserName,%User%
RegWrite,REG_SZ,HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,AutoAdminLogon,1
RegWrite,REG_SZ,HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,DefaultPassword,%Password%

Присвой переменным "User" и "Password" имя пользователя и пароль соответственно.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

3

Re: AHK: Событие удаления пароля Windows при завершении работы Windows

Благодарю. И не знал что так можно сделать в Windows

Но так как скрипты в моей программе уже сделаны под предыдущий вариант, неужели средствами AHK нельзя реализовать описанную мной команду?
Может на завершения самого скрипта как то можно сделать, если он завершается перед завершением Windows?

Ведь этот скрипт из стандартной справке AHK должен при завершении Windows отменить завершение работы системы...?

; The following DllCall is optional: it tells the OS to shut down this script first (prior to all other applications).
; This call has no effect on Windows 9x.
DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
return

WM_QUERYENDSESSION(wParam, lParam)
{
    ENDSESSION_LOGOFF = 0x80000000
    if (lParam & ENDSESSION_LOGOFF)  ; User is logging off.
        EventType = Logoff
    else  ; System is either shutting down or restarting.
        EventType = Shutdown
    MsgBox, 4,, %EventType% in progress.  Allow it?
    IfMsgBox Yes
        return true  ; Tell the OS to allow the shutdown/logoff to continue.
    else
        return false  ; Tell the OS to abort the shutdown/logoff.
}

4 (изменено: Alectric, 2015-01-04 14:39:41)

Re: AHK: Событие удаления пароля Windows при завершении работы Windows

Наверное так:

DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
return

WM_QUERYENDSESSION(wParam, lParam)
{
  Runwait, net.exe user %A_UserName% ""
  return true
}
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

5

Re: AHK: Событие удаления пароля Windows при завершении работы Windows

Alectric пишет:

Наверное так:

DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
return

WM_QUERYENDSESSION(wParam, lParam)
{
  Runwait, net.exe user %A_UserName% ""
  return true
}

Так у меня так и написано, только с добавлением:

....................
    ENDSESSION_LOGOFF = 0x80000000
    if (lParam & ENDSESSION_LOGOFF)  ; User is logging off.
        EventType = Logoff
    else  ; System is either shutting down or restarting.
        EventType = Shutdown

    if EventType = Shutdown
    {
        ifExist, D:\Папка на моем ПК
        {
....................

Но может стоит попробовать и ваш вариант.

6

Re: AHK: Событие удаления пароля Windows при завершении работы Windows

Alectric пишет:

Наверное так:

DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
return

WM_QUERYENDSESSION(wParam, lParam)
{
  Runwait, net.exe user %A_UserName% ""
  return true
}

Так тоже не работает, выскакивает ошибка инициализации net.exe

И даже этот скрипт с официальной справки AHK не работает, Windows завершается еще до нажатия в диалоговом окне: Да или Нет...

; The following DllCall is optional: it tells the OS to shut down this script first (prior to all other applications).
; This call has no effect on Windows 9x.
DllCall("kernel32.dll\SetProcessShutdownParameters", UInt, 0x4FF, UInt, 0)
OnMessage(0x11, "WM_QUERYENDSESSION")
return

WM_QUERYENDSESSION(wParam, lParam)
{
    ENDSESSION_LOGOFF = 0x80000000
    if (lParam & ENDSESSION_LOGOFF)  ; User is logging off.
        EventType = Logoff
    else  ; System is either shutting down or restarting.
        EventType = Shutdown
    MsgBox, 4,, %EventType% in progress.  Allow it?
    IfMsgBox Yes
        return true  ; Tell the OS to allow the shutdown/logoff to continue.
    else
        return false  ; Tell the OS to abort the shutdown/logoff.
}