Подтвердить что ты не робот

Чтение переменных среды с помощью Javascript

Мне нужно прочитать системное время из переменных среды на клиентской ОС. Я искал в Stackoverflow и обнаружил, что это невозможно. Тем не менее, эти ответы были с 2010 года, и я хочу спросить, изменилось ли с тех пор.

Возможно ли это с какой-то структурой? или Javascript по-прежнему изолирован и отключен от ОС?

4b9b3361

Ответ 1

szpic, если Javascript не был изолирован от ОС, любой полудучий преступник мог попасть на ваш компьютер и взять под свой контроль. Разрешение переменных среды слишком низкое, чтобы их можно было разрешить.

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


Если вы хотите сделать это с помощью Javascript, вам придется использовать специальный веб-браузер, например node-webkit. Однако он не будет работать в любом обычном веб-браузере, поэтому не ожидайте, что более 0,0001% населения ожидают запустить вашу страницу.


Я не знаю вашего предполагаемого использования, но один трюк, чтобы добавить переменную окружения, должен сделать ярлык для вашего веб-приложения и включить его там как параметр URL (по крайней мере, в Winblows).

http://myapp.com?computername=%COMPUTERNAME%

Ответ 2

FWIW.... Просто играя с файлом .HTA (да, который использует механизм MSIE ', поэтому вы, вероятно, можете забыть о других браузерах), а следующий JavaScript читает %TEMP% path, чтобы установить путь к файлу + имя для безопасной записи временного файла. Это работает нормально для меня:

var oTest = new ActiveXObject("wscript.shell");
pathTest = oTest.ExpandEnvironmentStrings("%TEMP%") + "\\test_it.txt";
oTest = null;
alert(pathTest);  // proves we can read %TEMP%

// and create the file, to complete the example
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var fil = oFSO.CreateTextFile(pathTest, true);
fil.WriteLine("Hello wonderful world!");
fil.Close();

Ответ 3

Существует только один способ сделать это - с помощью специального веб-браузера. Что-то вроде node-webkit. Он объединяет движок webkit с node.js, поэтому вы можете использовать его вместе с DOM.

document.write(require('os').type());

Но, как говорили все, - нет никакого шанса сделать это с помощью "обычного" веб-браузера.

Ответ 4

Это было возможно с помощью VBScript, но поддержка удалена в IE11. Если вы находитесь в среде IE (например, внутренней интрасети), вы можете конвертировать ваш код VB (CreateObject ( "wscript.shell" )) вместо ActiveX. Это позволит вам избежать проблемы, связанной с тем, что VB Script обесценивается в режиме IE11 Edge и позволяет вашей странице обращаться к вашим переменным среды и использоваться в режиме Edge. Очевидно, что это только IE, но если вы использовали VBScript, прежде чем он был только IE.

var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);

Ответ 5

Объект Date() javascript предоставляет системное время для клиентов.