我需要從客戶端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