Тема: JS: Как запустить скрипт от другого пользователя
Подскажите, написал скрипт изменения системных переменных сред для пользователей. И теперь пытаюсь запустить из под другого пользователя, с правами администратора (например через runas) этот скрипт.
Мне выдает ошибку такого характера:
Сценарий: Wscript.js
Строка: 1
Символ: 1
Ошибка: Невозможно создание объекта сервером программирования объектов
Код: 800A01AD
Источник: Ошибка выполнения Microsoft JScript
Но если так отрабатываешь (без запуска вторичного входа, с текущим пользователем), то все отрабатывает и применяется.
Вот сам скрипт:
<html>
<head>
<META http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<title>XXX</title>
<HTA:APPLICATION
APPLICATIONNAME="Environment"
ID="Environment"
VERSION="0.01"
BORDER="dialog"
SYSMENU="yes"
MAXIMIZEBUTTON="no"
ICON="UnLockUser.ico"
SCROLL="no"
CONTEXTMENU="no"
SELECTION="no"/>
</head>
<script language="VBScript">
Dim oShell, oEnv, NewEnvROOT, NewEnvPATH, tbUserROOT, tbUserPATH
Sub Window_OnLoad
window.resizeTo 300,170
lngBias = GetTimeZoneBias
End Sub
Sub OnClickButtonbtMINROOT()
NewEnvROOT = UCase(Trim(tbUserROOT.Value))
Set oShell = WScript.CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("SYSTEM")
oEnv("MIN_ROOT") = NewEnvROOT
End Sub
Sub OnClickButtonbtMINPATH()
NewEnvPATH = UCase(Trim(tbUserPATH.Value))
Set oShell = WScript.CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("SYSTEM")
oEnv("MIN_PATH") = NewEnvPATH
End Sub
</script>
<SCRIPT language='JavaScript' type='text/javascript'><!--
var WScript=null;
var IE=new ActiveXObject("InternetExplorer.Application");
IE.Navigate("about:blank");
// здесь не помешала бы проверка на IE.Busy==false,
// однако, метод WScript.Sleep() пока не доступен,
// а window.setTimeout() усложнило бы пример.
IE.Document.Script.name="mailbox";
IE.Document.Script.Callback=function (arg) {
WScript=arg; IE.Quit();
};
var WshShell=new ActiveXObject("WScript.Shell");
WshShell.Run("WScript.js", 0);
onunload=function () {WScript.Quit()};
// --></SCRIPT>
<body bgcolor="white">
<table cellspacing=1 cellpadding=3 bgcolor="black">
<tr>
<td bgcolor="white">
MIN_PATH <input type="text" name="tbUserPATH" id="User">
</td>
<td bgcolor="white">
<input type="button" name="btGetInfo" id="btGetInfo" value="Применить" onclick="OnClickButtonbtMINPATH">
</td>
</tr>
<tr>
<td bgcolor="white">
MIN_ROOT <input type="text" name="tbUserROOT" id="User">
</td>
<td bgcolor="white">
<input type="button" name="btGetInfo" id="btGetInfo" value="Применить" onclick="OnClickButtonbtMINROOT">
</td>
</tr>
</table>
</body>
</html>
Вот скрипт, чтоб включить объект Wscript, ошибка возникает на нем, т.е. первый скрипт отрабатывает, появляется окно и потом затыкается на этом скрипте.
var ShellWindows=(new ActiveXObject("Shell.Application")).Windows();
for (var i=0; i<ShellWindows.Count; i++)
try {
var Script=ShellWindows.Item(i).Document.Script;
if (Script.name=="mailbox") {
Script.Callback(WScript);
for (;;) WScript.Sleep(60000);
}
} catch (Err) {}
Читал эту ветку, но как то не помогло, или может, что-то не так сделал.
http://forum.script-coding.com/viewtopic.php?id=7262

