NodeJs:在Windows上获取我的文档路径

时间:2014-10-05 20:23:40

标签: windows node.js

如何使用NodeJS检索MyDocuments路径。

所以我想在NodeJs中使用以下C#代码获取一些东西:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

Thx&问候 斯蒂芬

2 个答案:

答案 0 :(得分:2)

找到答案:

var Q = require('Q');

var getUserDoc = function(callback) {

    var Winreg = require('winreg');
    var deferred = Q.defer();

    var regKey = new Winreg({
        hive: Winreg.HKCU,
        key: '\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders' 
    });

    var myDocFolder = regKey.values(function(err, items) {
        for (var i in items) {
            if (items[i].name === 'Personal') { 
                deferred.resolve(items[i].value);
            }
        }
    });
    deferred.promise.nodeify(callback);
    return deferred.promise;


}

getUserDoc().then(function(result) {
    console.log(result);
});

答案 1 :(得分:-1)

您应该使用环境变量:

function getUserDoc() {
  return process.env.USERPROFILE+'\\Documents';
}

这假定您运行Win7或更高版本。对于Win XP,它是\\My Documents。您可以轻松检查功能中的一个。

此外,您可以使用提供快捷方式homedir()的程序包path-extra

在这种情况下,你必须这样做:

var path = require('path-extra');

function getUserDoc() {
  return path.homedir()+'\\Documents';
}

这两种解决方案都允许您不为您的应用提供检查注册表的凭据。 并且运行方式比你发现的承诺+注册表黑客更快。

更新path-extra不再支持homedir了。 https://github.com/jprichardson/node-path-extra/commit/ce7a0b67ce07ca06ca2eeabf62621e1327b1d113 尽管如此,我已经保存了该片段以供使用; - )