none
如何在用户文件夹创建像图片,文档一样的文件夹? RRS feed

  • 问题

  • 如何在用户文件夹创建像图片,文档一样的文件夹?
    比如我的登陆用户名是abc,我的用户文件夹下(C:\Users\abc)会有[图片][文档]等文件夹,
    这些文件夹显示的是中文名,实际的名字是英文名,比如[文档](C:\Users\abc\Documents),
    而且文件夹属性中有[位置]标签,可以改变文件存储的位置.
    请问如何建立这样的文件夹呢?
    2009年8月4日 7:56

答案

  • 看了一下你的需求可能不是那么好實現:

    1. 因為像 "文檔" 和 "圖片" 之類的這些位於用戶文文件夾下的子文件夾, 是需要通過 desktop.ini 文件進行配置的.

    desktop.ini 的內容一般如下:
    [.ShellClassInfo]
    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
    InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
    IconResource=%SystemRoot%\system32\imageres.dll,-108
    IconFile=%SystemRoot%\system32\shell32.dll
    IconIndex=-237

    可以看到相關元素是記錄在 DLL 文件的資源裏, 如果只能遵從這種方式而沒有直接在文件裏設置相關元素的方法, 那要實現起來很麻煩, 首先你需要知道那些 DLL 文件存儲相關資源的信息, 并要自己做編譯.

    2. 關於向 "圖片" 和 "文檔" 這些文件夾路徑設置在注冊表也有相關記錄. 路徑位於:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

    該注冊表項有一個鍵值明確表明, 不能直接編輯必須通過下列 API 進行替換:

    !Do not use this registry key
    Use the SHGetFolderPath or SHGetKnownFolderPath function instead

    所以我建議樓主通過我第一個帖子的方法對文件夾路徑進行設置, 如果以後要對該文件夾進行遷移, 請透過 mklink 命令建立該文件夾的符號連接.

    操作步驟簡述:

    1. 遷移你要移動的文件夾到其他卷, 例如: 將文件夾 test123 遷移到 Q:\my.

    2. 以管理員身份運行命令提示符并執行命令

    mklink /d my_test123 q:\my\test123

    在你的用戶文件夾下創建一個指向 Q:\my\test123 的目錄符號鏈接.
    創建成功將返回類似如下信息:
    为 my_test123 <<===>> q:\my\test123 创建的符号链接

    3. 你可對該目錄符號連接重命名.

    4. 該目錄符號鏈接在 Windows 資源管理器 的地址欄顯示的路徑為你用戶文件夾下的一個子文件夾.

    5. 在其中建立的文件, 雖然在文件屬性顯示的地址為你用戶文件夾下. 但是該文件夾實際存儲在 Q:\my\test123 (以我的測試為例).

    6. 可以對該目錄符號連接設置文件夾模板.

    7. 刪除該目錄符號連接, 不會導致文件或文件夾丟失.

    8. 之所以使用目錄符號鏈接, 而不使用快捷方式, 是有一個好處或便捷的地方 就是可以直接在命令提示符下面用 cd 命令訪問指定目錄.

    截圖追加:

    1. 在命令提示符下的信息:
     


    2. 在 Windows 資源管理器的截圖:


    my_test123 為目錄符號連接, test123 為快捷方式

    注:
    部分信息被去掉, 請見諒.

    以上測試在 Lenovo ThinkPad 預裝簡體中文版 Windows Vista Home Basic Service Pack 2 測試通過.
    Folding@Home
    • 已编辑 repl 2009年8月4日 9:42
    • 已标记为答案 ibm.thinkpad 2009年8月4日 15:16
    2009年8月4日 9:17

全部回复

  • 你所提到的 "文檔" 和 "圖片" 文件夾都是一個用戶所屬的系統文件夾.

    對於自定義文件夾, 可以采用文件夾的 "自定義" 設置指定的文件夾模板來達到效果.

    至於改變文件夾儲存位置, 用剪貼即可.

    相關截圖:

    Folding@Home
    2009年8月4日 8:02
  • 想要达成的目标是生成一个和文档,音乐等用户所属的系统文件夹性质一样的文件夹,
    可以在用户目录下显示中文名,
    可以通过[位置]属性移动到其他分区而用户目录下依然可见。

    2009年8月4日 8:29
  • 我來測試一下, 可能需要用到 mklink 命令.
    Folding@Home
    2009年8月4日 8:30
  • 看了一下你的需求可能不是那么好實現:

    1. 因為像 "文檔" 和 "圖片" 之類的這些位於用戶文文件夾下的子文件夾, 是需要通過 desktop.ini 文件進行配置的.

    desktop.ini 的內容一般如下:
    [.ShellClassInfo]
    LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
    InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
    IconResource=%SystemRoot%\system32\imageres.dll,-108
    IconFile=%SystemRoot%\system32\shell32.dll
    IconIndex=-237

    可以看到相關元素是記錄在 DLL 文件的資源裏, 如果只能遵從這種方式而沒有直接在文件裏設置相關元素的方法, 那要實現起來很麻煩, 首先你需要知道那些 DLL 文件存儲相關資源的信息, 并要自己做編譯.

    2. 關於向 "圖片" 和 "文檔" 這些文件夾路徑設置在注冊表也有相關記錄. 路徑位於:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

    該注冊表項有一個鍵值明確表明, 不能直接編輯必須通過下列 API 進行替換:

    !Do not use this registry key
    Use the SHGetFolderPath or SHGetKnownFolderPath function instead

    所以我建議樓主通過我第一個帖子的方法對文件夾路徑進行設置, 如果以後要對該文件夾進行遷移, 請透過 mklink 命令建立該文件夾的符號連接.

    操作步驟簡述:

    1. 遷移你要移動的文件夾到其他卷, 例如: 將文件夾 test123 遷移到 Q:\my.

    2. 以管理員身份運行命令提示符并執行命令

    mklink /d my_test123 q:\my\test123

    在你的用戶文件夾下創建一個指向 Q:\my\test123 的目錄符號鏈接.
    創建成功將返回類似如下信息:
    为 my_test123 <<===>> q:\my\test123 创建的符号链接

    3. 你可對該目錄符號連接重命名.

    4. 該目錄符號鏈接在 Windows 資源管理器 的地址欄顯示的路徑為你用戶文件夾下的一個子文件夾.

    5. 在其中建立的文件, 雖然在文件屬性顯示的地址為你用戶文件夾下. 但是該文件夾實際存儲在 Q:\my\test123 (以我的測試為例).

    6. 可以對該目錄符號連接設置文件夾模板.

    7. 刪除該目錄符號連接, 不會導致文件或文件夾丟失.

    8. 之所以使用目錄符號鏈接, 而不使用快捷方式, 是有一個好處或便捷的地方 就是可以直接在命令提示符下面用 cd 命令訪問指定目錄.

    截圖追加:

    1. 在命令提示符下的信息:
     


    2. 在 Windows 資源管理器的截圖:


    my_test123 為目錄符號連接, test123 為快捷方式

    注:
    部分信息被去掉, 請見諒.

    以上測試在 Lenovo ThinkPad 預裝簡體中文版 Windows Vista Home Basic Service Pack 2 測試通過.
    Folding@Home
    • 已编辑 repl 2009年8月4日 9:42
    • 已标记为答案 ibm.thinkpad 2009年8月4日 15:16
    2009年8月4日 9:17
  • 谢谢.^_^
    用mklink创建了一个符号连接。

    [quote]
    mklink /d my_test123 q:\my\test123
    [/qoute]
    注意到您给的例子中mklink使用的是 /D,不知道与/J有什么区别,哪个更好?
    (好像系统里目录的符号都使用的是/J <JUNCTION>)

    /D /J的异同已经找到答案。
    参考了
    http://social.microsoft.com/Forums/zh-CN/vistazhchs/thread/95d0efc9-3ae9-4611-bb9d-68560c3c15ee

    JUNCTION为目录连接,在操作系统看来,就是目录本身,所以操作系统会统计真实文件的大小;
    SYMLINKD为目录链接,在操作系统看来,它是一个快捷方式,所以只统计这个快捷方式的大小。

    2009年8月4日 11:36