我需要从客户端OS上的环境变量中读取系统时间。我搜索了Stackoverflow,发现这是不可能的。但是,这些答案是从2010年开始的,我想问一下自那以后有什么变化。用Javascript读取环境变量
它可能与某种框架?或者JavaScript仍然是沙箱,并从操作系统切断?
我需要从客户端OS上的环境变量中读取系统时间。我搜索了Stackoverflow,发现这是不可能的。但是,这些答案是从2010年开始的,我想问一下自那以后有什么变化。用Javascript读取环境变量
它可能与某种框架?或者JavaScript仍然是沙箱,并从操作系统切断?
,如果Javascript没有被操作系统从沙箱中清理出来,任何机智的犯罪分子都可能进入你的计算机并控制它。允许环境变量的程度太低,以至于不允许。
看看你的所有环境变量,并问问自己,如果地球上的每个人都应该有权访问有关计算机的所有数据。
如果你想用JavaScript来做到这一点,你必须用一种特殊的Web浏览器,如node-webkit。但是,它不会在任何普通的Web浏览器上运行,所以不要期望有超过0.0001%的人希望运行你的页面。
我不知道你的用途,但一个招,在一个环境变量来,就是要建立一个快捷方式到你的Web应用程序,并将其包含在那里作为一个URL参数(至少在Winblows)。
http://myapp.com?computername=%COMPUTERNAME%
这取决于您使用的浏览器!你有没有听说过'node-webkit'? –
好点,@AreWojciechowski。我纠正了自己。 – dthree
只有一种方法可以做到这一点 - 通过使用特殊的Web浏览器。像node-webkit。它将webkit引擎与node.js集成,因此您可以将它与DOM一起使用。
document.write(require('os').type());
但正如其他人所说 - 没有机会使用“普通”网络浏览器来做到这一点。
FWIW ....只是与.HTA文件(是的,它使用MSIE“引擎”,所以你可能忘了其他浏览器)玩弄和下面的JavaScript读取%TEMP%
路径变量设置用于安全编写临时文件的filepath +名称。这适用于我:
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();
这是可能的使用VBScript,但在IE11中删除支持。如果您处于IE环境(如内部Intranet),则可以将VB代码(CreateObject(“wscript.shell”))转换为使用ActiveX代替。这将解决VBScript在IE11 Edge模式下折旧的问题,并允许您的页面访问您的环境变量并在Edge模式下使用。显然,这只是IE浏览器,但如果你在使用VBScript之前,它也只是IE浏览器。
var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);
如果JavaScript可以操作OS环境变量,我们都会被搞砸。 –
我不是故意在那里写的。刚刚阅读;> – szpic
它仍然不安全,所以你仍然不允许这样做(为什么它会改变?)。你需要读什么? – Bergi