Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаленный запуск HTA-приложения от имени текущего пользователя

Ответить
Настройки темы
VBS/WSH/JS - Удаленный запуск HTA-приложения от имени текущего пользователя

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


День добрый!
Имеем HTA-приложение (анкета) заполняющее несколько атрибутов в Active Directory для объекта пользователя, запустившего анкету. В AD на эти несколько аттрибутов розданы права на запись для "NT AUTHORITY\SELF" (т.е. каждый юзер может менять только собственные аттрибуты). Все отлично работает, если анкета запускается через logon-script (как и было задумано). Некоторые пользователи упорно игнорируют заполнение анкеты, не завершают сеанс месяцами, либо из-за сбоев в домене к ним не применяется групповая политика . Хочется форсировать запуск у самых упорных, т.е. как имея права администратора на рабочей станции, запустить программу от имени и в сеансе обычного пользователя.

P.S. Сразу скажу что задача не столь тривиальная (psexec/runas/schtask - все хотят пароль учетной записи), как многим может показаться, т.к. пароль пользователя мне не известен и узнавать его нет смысла - пользователей более 300 душ.

Отправлено: 09:30, 23-03-2010

 

Пользователь


Сообщения: 72
Благодарности: 27

Профиль | Сайт | Отправить PM | Цитировать


Как-то решал похожую задачу: требовалось отследить компьютеры, которые не перезагружаются больше месяца и вынудить пользователя перезагрузить компьютер, причем это должен был сделать именно пользователеь, чтобы потом не было жалоб на потерянные данные.

Выход нашел только один:
1. Написал приложение, которое в System Tray каждые 15 минут показывает облако, что нужно перезагрузить компьютер.
2. Руками (или скриптом) ставил его в планировщик на запуск один раз через 3 минуты от создания задания с режимом интерактивности (чтобы пользователь видел уведомления).
3. Как только приложение запускается, пользователь около часов видит иконку, и каждые 15 минут ему вываливается предупреждение, что компьютер нуждается в перезагрузке.
4. Как только компьютер перезагружен, задание пропадает и пользователь больше не уведомляется, что он давно не перегружал компьютер.

Потом усовершенствовал программу и поставил ее как сервис, который время от времени проверяет как долго компьютер не перезагружали и, если требуется, появляется в System Tray. Но решение не прижилось, так как нужно было брать на себя отвественность за стабильность программы, дорабатывать ее и т.п., а времени на это нет - я администратор, а не программист.

Итак, к чему все это рассказал. У нас в компании адресная книга тоже заполняется через HTA-приложение, которое запускается при логоне пользователя с определенными проверками (не чаще, чем раз в месяц, чтобы не нервировать пользователей). А так как нельзя запустить приложение от имени пользователя, не зная его пароля, то только и остается, что заставить его перезагрузить компьютер и применить доменные политики.

Вот скрипт, как постваить программу-уведомлялку в планировщик удаленного компьютера. Но скажу сразу, что, возможно, тут что-то напутано с определение времени запуска команды. Я потом его переделывал. Если интересно, то последняя версия скрипта вот тут Выполнение команды на удаленном компьютере.
Код: Выделить весь код
set oShell = createobject("wscript.shell")
set oFSO = createobject("Scripting.FileSystemObject")
sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%")
'Проверка наличия на компьютере файла HaveToReboot.exe, удаление его
If oFSO.FileExists(sWinDir & "\HaveToReboot.exe") Then oFSO.DeleteFile sWinDir & "\HaveToReboot.exe",True
'Копирование файла HaveToReboot.exe в папку Windows
oFSO.CopyFile oShell.CurrentDirectory & "\HaveToReboot.exe", sWinDir & "\",True
'Указание пути к файлу HaveToReboot.exe на компьютере
sCommand = sWinDir & "\HaveToReboot.exe"
'Указание имени компьютера (точка указывает на самого себя)
sComputer = "."
'Подключение к WMI для создания запроса
Set oWMIService = GetObject("winmgmts:\\" & sComputer & "\root\cimv2")
'Запрос всех объектов класса Win32_TimeZone (временная зона)
Set oColTime = oWMIService.ExecQuery("Select * from Win32_TimeZone")
'Получение информации о текущем часовом поясе компьютера
For each oTime in oColTime
if Month(Date) > 4 and Month(Date) <= 11 then
iLocalBias = oTime.Bias - oTime.DaylightBias
else
iLocalBias = oTime.Bias
end if
Next
'Создание времени запуска задания: YYYYMMDDHHMMSS.MMMMMM(+-)OOO"
'Выбор смещения часовой зоны: OOO
Select case Len(cStr(Abs(iLocalBias)))
case "0"
ATCommand = "Error! No information about remote computer time settings."
wscript.quit
case "1"
sLocalBias = "00" & cStr(Abs(iLocalBias))
case "2"
sLocalBias = "0" & cStr(Abs(iLocalBias))
case else
sLocalBias = cStr(Abs(iLocalBias))
End select
'Выбор знака для смещения часовой зоны (+-)OOO
If iLocalBias >= 0 then
sOOO = "+" & sLocalBias
Else
sOOO = "-" & sLocalBias
End if
'Выбор времени запуска задания (3 минуты от текущего времени)
If Len(cStr((Minute(Time) + 3))) = 1 then
sMM = "0" & cStr(Minute(Time) + 3)
Else
sMM = cStr(Minute(Time) + 3)
End if
If Len(cStr(Hour(Time))) = 1 then
sHH = "0" & cStr(Hour(Time))
Else
sHH = cStr(Hour(Time))
End if
sYYYYYMMHHMMSS = "********" & sHH & sMM & "00.000000"
'Сборка времени запуска задания
sStartTime = sYYYYYMMHHMMSS & sOOO
'Создание объекта планировщика
Set oJob = oWMIService.Get("Win32_ScheduledJob")
'Установка задания
errJobCreated = oJob.Create (sCommand, sStartTime, False , , , true, JobID)
'help for method Create(Command, Time, RunRepeatedly, DaysOfWeek to run,DaysOfMonth to run, InteractWithDesktop, JobID)
'Проверка результата установки задания
If errJobCreated = 0 then
ATCommand = "The job was successfully set on " & sComputer
Else
ATCommand = "Error! The job has not been set."
End if

-------
Статьи для системных инженеров http://www.sysengineering.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:39, 15-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаленный запуск HTA-приложения от имени текущего пользователя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Вывод имени текущего пользователя Sadowod Скриптовые языки администрирования Windows 24 27-12-2012 10:13
C/C++ - Запуск приложения от имени другого пользователя в Borland Builder C++ 6 DaRiYs Программирование и базы данных 5 08-12-2009 01:54
Доступ - Запуск от имени другого пользователя. alexnj Microsoft Windows 7 0 08-05-2009 20:35
Разное - Запуск от имени пользователя.. Великий Кукурузо Microsoft Windows Vista 26 29-10-2008 09:03
Как получить имя текущего пользователя для использования его в имени файла Denchik Автоматическая установка Windows 2000/XP/2003 1 25-01-2006 22:33




 
Переход