Чтение переменных среды с помощью Javascript
Мне нужно прочитать системное время из переменных среды на клиентской ОС. Я искал в Stackoverflow и обнаружил, что это невозможно. Тем не менее, эти ответы были с 2010 года, и я хочу спросить, изменилось ли с тех пор.
Возможно ли это с какой-то структурой? или Javascript по-прежнему изолирован и отключен от ОС?
Ответы
Ответ 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 предоставляет системное время для клиентов.