Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 29.08.2017
Сообщений: 2
1

Не работает скрипт от имени Администратора

29.08.2017, 14:48. Показов 1392. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Коллеги, день добрый.
подскажите по такому вопросу, есть скрипт (приведу ниже) , работает нормально выводит окно запроса данных от пользователя.
НО если запускать этот скрипт от Администратора - то окно запроса запустившему пользователю не выводится. (в процессах и в панели задач видно что окно запроса запустилось).
как правильно запустить от Админа и чтобы окно вывелось инициатору?

пример скрипта
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
dim completed
 
msgbox inputboxml("Enter text:", "Multiline inputbox via HTA", "default" & vbcrlf & vbtab & "multiline" & vbcrlf & "text")
 
function inputboxml(prompt, title, defval)
    dim window
    set window = createwindow()
    completed = 0
    defval = replace(replace(replace(defval, "&", "&amp;"), "<", "&lt;"), ">", "&gt;")
    with window
        with .document
            .title = title
            .body.style.background = "buttonface"
            .body.style.fontfamily = "consolas, courier new"
            .body.style.fontsize = "8pt"
            .body.innerhtml = "<div><center><nobr>" & prompt & "</nobr><br><br></center><textarea id='hta_textarea' style='font-family: consolas, courier new; width: 100%; height: 100px;'>" & defval & "</textarea><br><button id='hta_cancel' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>Cancel</button><button id='hta_ok' style='font-family: consolas, courier new; width: 85px; margin: 10px; padding: 3px; float: right;'>OK</button></div>"
        end with
        .resizeto 400, 230
        .moveto 100, 100
    end with
    window.hta_textarea.focus
    set window.hta_cancel.onclick = getref("hta_cancel")
    set window.hta_ok.onclick = getref("hta_ok")
    set window.document.body.onunload = getref("hta_onunload")
    do until completed > 0
        wscript.sleep 10
    loop
    select case completed
    case 1
        inputboxml = ""
    case 2
        inputboxml = ""
        window.close
    case 3
        inputboxml = window.hta_textarea.value
        window.close
    end select
end function
 
function createwindow()
    rem source [url]http://forum.script-coding.com/viewtopic.php?pid=75356#p75356[/url]
    dim signature, shellwnd, proc
    on error resume next
    signature = left(createobject("Scriptlet.TypeLib").guid, 38)
    do
        set proc = createobject("WScript.Shell").exec("mshta ""about:<html><head><script>moveTo(-32000,-32000);</script><hta:application id=app border=dialog minimizebutton=no maximizebutton=no scroll=no showintaskbar=yes contextmenu=no selection=yes innerborder=no icon=""%windir%\system32\notepad.exe""/><object id='shellwindow' classid='clsid:8856F961-340A-11D0-A96B-00C04FD705A2'><param name=RegisterAsBrowser value=1></object><script>shellwindow.putproperty('" & signature & "',document.parentWindow);</script></head></html>""")
        do
            if proc.status > 0 then exit do
            for each shellwnd in createobject("Shell.Application").windows
                set createwindow = shellwnd.getproperty(signature)
                if err.number = 0 then exit function
                err.clear
            next
        loop
    loop
end function
 
sub hta_onunload
    completed = 1
end sub
 
sub hta_cancel
    completed = 2
end sub
 
sub hta_ok
    completed = 3
end sub


Добавлено через 5 минут
дело я так понимаю в том - что вывод осуществляется в другую сессию? (%~dp0 или %~f0) , надо правильно перенаправить вывод диалогового окна.
 Комментарий модератора 
Для Вашего вопроса создана отдельная тема
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2017, 14:48
Ответы с готовыми решениями:

Как запустить от имени администратора скрипт для очистки папок?
есть BAT файл logon.bat который должен запускать при входе пользователя. он очищает темпы и всякую...

Drag`n`Drop не работает если программа запущена от имени администратора
Собственно моя проблема в названии темы. Как это исправить?

программа полноценно работает только если запустить от имени администратора
программа полноценно работает только если запустить от имени администратора. как сделать чтобы...

Не работает скрипт на локального администратора компьютера
Здравствуйте. Сделал скрипт подключения дисков при входе в систему, он работает на обычных...

1
0 / 0 / 1
Регистрация: 29.08.2017
Сообщений: 2
31.08.2017, 09:20  [ТС] 2
Лучший ответ Сообщение было отмечено Maks как решение

Решение

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

path - путь откуда запустился первый скрипт. второй скрипт лежит там же.

s1 - передаваемые значения.

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "C:\Windows\System32\wscript.exe", path & "\b1.vbs " & s1, "", "runas", 1

в начале второго скрипта (b1.vbs):

Option Explicit
Dim WshArguments, WshShell, i, list

Set WshShell = CreateObject("Wscript.Shell")
set WshArguments = WScript.Arguments 'Определяем, есть ли передача параметров

if WshArguments.count()=0 then
MsgBox "Передайте сценарию аргументы"
else ' Производим перебор коллекции аргументов
for i=0 to WshArguments.Count-1
list = WshArguments(i)
next
End if
list - нужная переменная. если передавалось одно значение.

ловлю значения во втором скрипте который уже с правами админа, и он уже отрабатывает по AD то что нужно.
0
31.08.2017, 09:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2017, 09:20
Помогаю со студенческими работами здесь

Быстро повысить привилегии до уровня администратора и запускать от имени администратора программы
Парни, хочется иметь что-то по типу sudo, только для Win PowerShell. Задачи две: открыв...

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

Не работает скрипт для открытия программы с правами администратора
Друзья вот такая проблема. У компьютера 2 юзера: administrator и power user. На комп установлен...

Разница в работе bat-файла при его запуске от имени простого пользователя и от имени администратора
Здравствуйте. Пытаюсь создать .bat который: создаёт папку %ProgramFiles%\MyProg и копирует туда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru