結論
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のユーザーのスタートメニューにアクセスしてみます。
console.log(`${process.env.APPDATA}\\Microsoft\\Windows\\Start Menu\\Programs\\`);
スタートメニューにショートカットを作るのも楽ちんですね。おしまい。