Сценарии выхода из системы в Windows 7

852
chrsblck

У меня есть публичные машины, которые мне нужны для запуска сценариев выхода из системы на Perl. Я хочу, чтобы скрипт запускался для обычного пользователя. Похоже, что UAC блокирует это. Итак, я переключил уровень UAC, чтобы «никогда не уведомлять», что, кажется, отключает UAC. Но все еще нет игры в кости. Эти скрипты должны быть запущены при выходе!

2
Если вы запустите этот сценарий, войдя в систему как пользователь без прав администратора, UAC запрашивает повышение прав? Кроме того, как у вас работает этот скрипт? Через групповую политику uSlackr 12 лет назад 0
@ uSlacker- Да, я запускаю это через GPO как сценарий выхода chrsblck 12 лет назад 0
UAC не отключается, если вы установите его «никогда не уведомлять». Есть еще один метод, который нужно использовать, чтобы полностью отключить его. 12 лет назад 0
@ Randolph - Согласно странице Microsoft Tech Net, это исправление, которое они дают для «выключения UAC». Если я не выключаю UAC, ты знаешь как? chrsblck 12 лет назад 0
Кажется, я думал о Windows Vista, а не о Windows 7. Я прошу прощения за путаницу. В Vista есть явная опция «выключить», чтобы нажать на нее. 12 лет назад 0

2 ответа на вопрос

0
Ganesh R.

UAC заблокирует программы, которым нужен доступ администратора.

Если ваши perl-скрипты запрашивают повышение прав, то для обычного пользователя, даже если UAC выключен, Windows запросит доступ администратора (поведение, аналогичное Windows XP).

Что делает скрипт выхода? Если ему нужно запустить что-то, требующее прав администратора, вам может потребоваться написать запланированное задание или службу Windows, которая запускается в учетной записи администратора, чтобы сделать это за вас.

Скрипт Perl делает несколько вещей. Он очищает все TIF-файлы, сохраняет несколько Dir-файлов для пользователя и запускает некоторые системные вызовы для удаления данных формы и т. Д. Я также попытался написать командный файл для повышения уровня сценария Perl, но .bat также не будет работать. С ХР мой метод работал нормально chrsblck 12 лет назад 0
0
bzsparks

Из вашего описания кажется, что для выполнения скрипта требуются права администратора. Если сценарий не запущен из процесса с токеном администратора, вам будет предложено через UAC повысить ваши привилегии.

Вы можете обойти это ограничение с помощью простой службы Windows, которая работает как пользователь LOCAL SYSTEM и реализует метод OnCustomCommand ().

Из сценария выхода из системы есть исполняемый файл, который вызывает метод ExecuteCommand (), передавая предопределенный тип int, который будет служить триггером для службы для выполнения команд, требующих прав администратора.

private enum CustomCommands { RunAsAdmin = 128 }; ServiceController srvc = new ServiceController("SimpleService"); srvc.ExecuteCommand((int)CustomCommands.RunAsAdmin); 

Метод ServiceBase.OnCustomCommand

@ bzsparks- Итак, мне нужно создать VB-файл, который будет вызывать мой Perl-скрипт? Я попробовал эту идею с пакетным файлом, который будет запускать исполняемый файл от имени администратора, но не повезло. Итак, я никогда не писал ничего VB, вы можете помочь здесь? chrsblck 12 лет назад 0