Lecture de variables d'environnement avec Javascript

J'ai besoin de lire l'heure système à partir des variables d'environnement sur le système d'exploitation du client. J'ai cherché sur Stackoverflow et j'ai trouvé que ce n'était pas possible. Cependant, ces réponses dataient de 2010 et je veux demander si quelque chose a changé depuis.

Est-ce possible avec une sorte de cadre? ou Javascript est toujours sandbox et coupé du système D'exploitation?

21
demandé sur Max 2014-01-23 21:47:55

5 réponses

szpic, si Javascript N'était pas Sandbox du système D'exploitation, tout criminel à demi-esprit pourrait entrer sur votre ordinateur et prendre le contrôle. Autoriser les variables environnementales est un niveau trop bas pour être autorisé.

Jetez un oeil à toutes vos variables environnementales et demandez - vous si tout le monde sur la planète devrait avoir accès à toutes ces données sur votre ordinateur.


Si vous voulez le faire avec Javascript, vous devez utiliser un navigateur web, tel que node-webkit. Il ne va pas fonctionner sur un navigateur Web normal, Cependant, alors ne vous attendez pas à plus de 0.0001% de la population à s'attendre à exécuter votre page.


Je ne connais pas votre utilisation prévue, mais une astuce, pour ajouter une variable d'environnement, consiste à créer un raccourci vers votre application web et à l'inclure en tant que paramètre URL (au moins sur Winblows).

http://myapp.com?computername=%COMPUTERNAME%
12
répondu dthree 2014-01-23 18:03:02

FWIW.... Juste jouer avec un .HTA file (oui qui utilise le 'moteur' MSIE afin que vous puissiez probablement oublier les autres navigateurs) {[6] } et le JavaScript suivant lit la variable %TEMP% path pour définir un chemin de fichier + nom pour écrire en toute sécurité un fichier temporaire. Cela fonctionne bien pour moi:

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();
5
répondu AjV Jsy 2014-04-28 22:26:58

L'objet javascript Date() fournit l'heure système des clients.

5
répondu kidconcept 2017-03-03 05:21:52

Il N'y a qu'une seule façon de le faire - en utilisant un navigateur Web spécial. Quelque chose comme node-webkit. Il intègre le moteur webkit avec node.js, de sorte que vous pouvez l'utiliser avec DOM.

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

Mais comme tout le monde l'a dit-il n'y a aucune chance de le faire avec un navigateur web "normal".

4
répondu Are Wojciechowski 2014-01-23 17:57:38

Cela était possible en utilisant VBScript mais le support est supprimé dans IE11. Si vous êtes dans un environnement IE (tel qu'un Intranet interne), vous pouvez convertir votre Code VB (CreateObject ("wscript.shell")) pour utiliser ActiveX à la place. Cela vous permettra de contourner le problème que le Script VB est déprécié en mode Edge IE11 et de permettre à votre page d'accéder à vos variables d'environnement et d'être utilisée en mode Edge. Évidemment, C'est IE seulement, mais si vous utilisiez VBScript avant qu'il ne soit aussi IE seulement.

var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);
2
répondu Mike 2014-09-08 10:07:44