Help us understand the problem. What is going on with this article?

Node.jsで環境変数(AppDataの場所、PATH、その他)を取得したい

More than 1 year has passed since last update.

結論

process.envを使います。

node.js - how to get the OS platforms user data folder - Stack Overflow

実践

ターミナルでnodeを叩くと始まるInteractive Rubyみたいなアレで実行してみましょう。

{ ALLUSERPROFILE : "C:\\ProgramData",
  APPDATA : "C:\\Users\\jotaro\\AppData\\Roaming",
  (省略
}

こんなObjectが返ってきました。これはもう要するに、process.env.APPDATAと書けば、"C:\\Users\\jotaro\\AppData\\Roaming"が返ってくるというわけですね。あとはprocess.env.PATHからPATHの編集も…は…できないようです。

制限

Process - Node.js Documentation によれば、

It is possible to modify this object, but such modifications will not be reflected outside the Node.js process. In other words, the following example would not work:

$ node -e 'process.env.foo = "bar"' && echo $foo

「値を変更することはできるけど、Node.jsのプロセス内だけでしか変わらないよ」(超適当訳)とのこと。PATHを通したり環境変数をいじることは不可能なようです。うっかりPATH破壊でもしたらと思うと、納得がいきます。
もしかしたら環境変数の変更方法というのもあるのかもしれませんが、適当にググった結果ないと判断しました。

応用

スタートメニュー

応用して、Windowsのユーザーのスタートメニューにアクセスしてみます。

test.js
console.log(`${process.env.APPDATA}\\Microsoft\\Windows\\Start Menu\\Programs\\`);

スタートメニューにショートカットを作るのも楽ちんですね。おしまい。

AumyF
おーみーと呼んでください。職業は高校生です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away