Что нового

Окна, Диалоги Скрипт запущен от системной учетной записи и не показывает диалоговое окно

Geqsogen

Новичок
Сообщения
24
Репутация
1
Есть скрипт ниже, который работает как надо, если запустить его от имени пользователя.
Но если он запущен от имени системы, чтобы любому пользователю, вошедшему в систему, отобразить этот диалог, то ничего не отображается.
Есть какой-то вариант видеть активную учетную запись и показать диалог именно ему? (на компе может быть несколько авторизованных пользователей AD)
Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $mainind = 0 ; "1" - перенос на час, "2" - перенос на сутки, "-1" - выключение

While 1
    Sleep(1000)

    If $mainind = 0 Then
        If @HOUR = 20 And @MIN >= 00 Then
            $arr = MsgBox(48 + 4096, "Выключение компьютера!", "Ваш компьютер будет выключен в 20:30. Закрытие этого окна перенесет запрос выключения на 21:00", 300)
            If $arr = 1 Then
                $mainind = 1
            EndIf
            If $arr = -1 Then
                $mainind = -1
            EndIf
        EndIf
    EndIf

    If $mainind = 1 Then
        If @HOUR = 21 And @MIN >= 00 Then
            $arr = MsgBox(48 + 4096, "Выключение компьютера!", "Ваш компьютер будет выключен в 21:30. Закрытие этого окна перенесет запрос на 20:00 следующего дня", 60)
            If $arr = 1 Then
                $mainind = 2
            EndIf
            If $arr = -1 Then
                $mainind = -1
            EndIf
        EndIf
    EndIf

    If $mainind = -1 Then
        Shutdown(21)
        ExitLoop
    EndIf

    If $mainind = 2 Then
        $mainind = 0
        Sleep(43200000) ; 12 часов
    EndIf
WEnd
 

ZaRaki

Знающий
Сообщения
48
Репутация
19
Есть скрипт ниже, который работает как надо, если запустить его от имени пользователя.
Но если он запущен от имени системы, чтобы любому пользователю, вошедшему в систему, отобразить этот диалог, то ничего не отображается.
Есть какой-то вариант видеть активную учетную запись и показать диалог именно ему? (на компе может быть несколько авторизованных пользователей AD)
Я думаю проще скомпилировать скрипт в exe файл (компилятор идёт в сборке с autoit), и запихать его в автозагрузку для любого пользователя.
Если не хочется чтобы автозагрузку отключили, замаскируй, переименуй в какое нибудь якобы системное приложение, при компиляции прицепи иконку к exe файлу.
Помимо автозагрузки, есть ещё планировщик заданий, туда тоже можно запихать этот же exe'шник. В планировщике не так паливно как в автозагрузке )
.
P.S. Скрипт что ты переделал под себя, там в msgbox параметр указывается в секундах, первое сообщение через 5 минут пропадает и сразу ребут. Второе через 1 минуту и сразу ребут.
 

filautdinov

Знающий
Сообщения
96
Репутация
9
Попробуй через cmd
Код:
msg * /server:127.0.0.1 "Тестовое сообщение "
 
Автор
G

Geqsogen

Новичок
Сообщения
24
Репутация
1
Я думаю проще скомпилировать скрипт в exe файл (компилятор идёт в сборке с autoit), и запихать его в автозагрузку для любого пользователя.
Если не хочется чтобы автозагрузку отключили, замаскируй, переименуй в какое нибудь якобы системное приложение, при компиляции прицепи иконку к exe файлу.
Помимо автозагрузки, есть ещё планировщик заданий, туда тоже можно запихать этот же exe'шник. В планировщике не так паливно как в автозагрузке )
.
P.S. Скрипт что ты переделал под себя, там в msgbox параметр указывается в секундах, первое сообщение через 5 минут пропадает и сразу ребут. Второе через 1 минуту и сразу ребут.
Скрипт естественно скомпилирован.
Проблема в том, что в задаче стоит распространение exe через политики AD именно на уровне компьютеров... Хотя сейчас уже думаю как реализовать на уровне пользователей, хотя это намного сложнее, исходя из сложившейся инфраструктуры.
Планировщик заданий сразу нет, так как на разных версиях ОС сложно скриптом добавить одно и то же задание. Да и проще политиками на уровне пользователей запустить файл.
P.S. Приведенный в примере скрипт взят из тестовой версии, чтобы не ждать полчаса для проверки. Спасибо :yes:
Сообщение автоматически объединено:

Попробуй через cmd
Код:
msg * /server:127.0.0.1 "Тестовое сообщение "
Идея интересна. Но что то у меня ничего не выдает вообще:
Код:
$output = Run(@ComSpec & " /c msg * /server:127.0.0.1 /time:10 test", @SystemDir)
 
Последнее редактирование:
Верх