У меня есть JScript, который предназначен для работы на платформе Windows в файле .js (а не в сценарии веб-браузера.) Могу ли я определить, работает ли мой скрипт с повышенными правами или с правами администратора?Обнаруживать, если JScript работает приподнято?
ответ
OK. Кажется, я понял. Благодаря this poster, это работает:
function isRunningElevated()
{
//Checks if this scrpt is running elevated
//RETURN:
// = 'true' if yes
var res = runCommandNoWindow("net session");
return res === 0;
}
function runCommandNoWindow(strCmd)
{
//Run command
//RETURN:
// = Integer returned by the command
var res = null;
try
{
var oShell = WScript.CreateObject("WScript.Shell");
res = oShell.Run(strCmd, 0, true); //No window, wait to finish!
}
catch(e)
{
//Failed
res = null;
}
return res;
}
Если вы ищете «отказ в сеансе доступа к сети», вы увидите, что этот вопрос задан довольно часто. Если Microsoft решит сделать работу «net session» без повышения, этот метод определения высоты больше не будет работать. –
@Bill_Stewart: Я понимаю это, но каково ваше альтернативное решение? Я не могу получить токен доступа пользователя от JScript. С другой стороны, я сомневаюсь, что MS позволит любому пользователю выполнить «чистую сессию» - разве это не будет лазейкой безопасности? Не то, что у MS нет никого :) – c00000fd
Я написал внешний исполняемый файл с именем IsElevated32.exe, который позволяет определить, работает ли текущий процесс с повышенным уровнем. Вы можете скачать его с моего [веб-сайта] (http://www.westmesatech.com/misctools.html). Загрузка - это «Инструмент высот». Неограниченное бесплатное ПО. –
Что именно вы пытаетесь проверить? Какая/какая привилегия в частности? –
@JeremyJStarcher: мой скрипт работает как администратор. – c00000fd
Похожее: [VBScript: проверьте, имеет ли сценарий административные разрешения] (http://stackoverflow.com/q/1599567/113116). – Helen