如何使用NodeJS检索MyDocuments路径。NodeJs:在Windows上获取MyDocuments路径
所以我希望得到的东西在的NodeJS与下面的C#代码:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
THX &问候 斯特凡
如何使用NodeJS检索MyDocuments路径。NodeJs:在Windows上获取MyDocuments路径
所以我希望得到的东西在的NodeJS与下面的C#代码:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
THX &问候 斯特凡
找到了答案:
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);
});
您应该使用环境变量改为:
function getUserDoc() {
return process.env.USERPROFILE+'\\Documents';
}
这假设你运行Win7或更高版本。对于Win XP,它会是\\My Documents
。您可以轻松地检查您的功能中的一个或另一个。
此外,您还可以使用它提供的快捷主目录()
在这种情况下,包装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 虽然为了别出心裁,但我已经保存了该片段以供可能使用;-)
如果用户在Windows中更改了MyDcouments文件夹的路径,Patah path.homedir()和process.env.USERPROFILE不指向正确的目录... 因此,两个变体都不幸工作... – 2014-10-05 22:09:34
请注意, Windows XP翻译文档文件夹。所以在法国,这将是'\\ Mes Documents'。 Vista和更新的作品(不知道如何:别名?不同的显示名称?) – thomasb 2016-11-08 15:50:20
Downvoted,因为您可以独立移动每个文件夹。例如:我的同事已将他的下载文件夹移至“D:\ Downloads”,因此不起作用。 – thomasb 2016-11-09 13:30:13
这不是查找信息的好方法。更好地调用官方API而不是黑客注册表 – 2014-10-05 21:01:17
我也不喜欢它,但是还有其他可能性吗? – 2014-10-05 22:09:56
不知道你可以从node.js做什么。只是Win32提供API来获取这些位置。 – 2014-10-05 22:14:27