2013-06-15 1 views
2

У меня есть JScript, который предназначен для работы на платформе Windows в файле .js (а не в сценарии веб-браузера.) Могу ли я определить, работает ли мой скрипт с повышенными правами или с правами администратора?Обнаруживать, если JScript работает приподнято?

+0

Что именно вы пытаетесь проверить? Какая/какая привилегия в частности? –

+0

@JeremyJStarcher: мой скрипт работает как администратор. – c00000fd

+1

Похожее: [VBScript: проверьте, имеет ли сценарий административные разрешения] (http://stackoverflow.com/q/1599567/113116). – Helen

ответ

0

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; 
} 
+0

Если вы ищете «отказ в сеансе доступа к сети», вы увидите, что этот вопрос задан довольно часто. Если Microsoft решит сделать работу «net session» без повышения, этот метод определения высоты больше не будет работать. –

+0

@Bill_Stewart: Я понимаю это, но каково ваше альтернативное решение? Я не могу получить токен доступа пользователя от JScript. С другой стороны, я сомневаюсь, что MS позволит любому пользователю выполнить «чистую сессию» - разве это не будет лазейкой безопасности? Не то, что у MS нет никого :) – c00000fd

+0

Я написал внешний исполняемый файл с именем IsElevated32.exe, который позволяет определить, работает ли текущий процесс с повышенным уровнем. Вы можете скачать его с моего [веб-сайта] (http://www.westmesatech.com/misctools.html). Загрузка - это «Инструмент высот». Неограниченное бесплатное ПО. –