【问题标题】:In Windows Node.js fs.readdirSync With Users Folders etc在 Windows Node.js fs.readdirSync 与用户文件夹等
【发布时间】:2018-08-14 20:26:28
【问题描述】:

我一直在开发一个 nw.js 项目并在其中正常使用 node.js 文件系统功能。在我的应用程序中有一个文件管理器,我根据用户导航列出文件夹和文件。例如,在 Windows 中,如果我扫描驱动器 C:我将土耳其语命名文件夹“Kullanıcılar”作为“用户”。我知道它在操作系统中的真实名称是“用户”,只是根据语言在屏幕上看到。在我的文件管理器中显示时,我可以替换此类文件夹的名称,但如果存在,我正在寻找更好的解决方案。提前致谢。

【问题讨论】:

    标签: node.js nw.js


    【解决方案1】:

    有一个 SO 答案 here 使用 SHGetFileInfo 函数读取 C# 中文件夹的本地化名称,这可能会帮助您。

    现在我知道你没有问,但如果你想知道信息存储在哪里...它在目录中,在 Desktop.ini 文件中。

    例如,我的 Windows 10 安装中包含“用户”:

    [.ShellClassInfo]
    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21813
    

    这适用于我的用户文件夹中的 Images 文件夹(将其显示给您其他键):

    [.ShellClassInfo]
    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
    InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
    IconResource=%SystemRoot%\system32\imageres.dll,-113
    IconFile=%SystemRoot%\system32\shell32.dll
    IconIndex=-236
    

    @%SystemRoot%\system32\shell32.dll,-21813 指向必须读取给定文件的MUI (multilingual user interface) resources,键 21813(大概@ 表示它在这个文件中,而不是这个字面值,但不要引用我的话)。 %SystemRoot% 是指向 Windows 目录的环境变量。

    实际的 MUI 文件及其位置由 Windows 处理(请参阅上面的 MSDN 链接),但我们碰巧知道 shell32.dll 的美国英语本地化的 MUI 文件是 system32\en-US\shell32.dll.mui

    Resource Hacker打开那个文件,我们可以搜索21813——瞧!我们可以找到STRINGTABLE resource#1364,其中包含:

    [...snip...]
    21812,  "Extras and Upgrades"
    21813,  "Users"
    21814,  "Saved Games"
    [...snip...]
    

    很遗憾,我没有可用的tr-TR/shell32.dll.mui,所以你只需要相信我,你会在那里找到Kullanıcılar 字符串。

    【讨论】:

    • 非常感谢,但这不是我正在寻找的解决方案。
    • 好吧,SHGetFileInfo 解决方案可以为您提供任何文件夹的本地化名称,而且...这就是您要找的,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多