积极答复者
如何在用户文件夹创建像图片,文档一样的文件夹?

问题
答案
-
看了一下你的需求可能不是那么好實現:
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
全部回复
-
看了一下你的需求可能不是那么好實現:
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
-
谢谢.^_^
用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为目录链接,在操作系统看来,它是一个快捷方式,所以只统计这个快捷方式的大小。- 已编辑 ibm.thinkpad 2009年8月4日 11:59
- 已标记为答案 ibm.thinkpad 2009年8月4日 15:14
- 取消答案标记 ibm.thinkpad 2009年8月4日 15:16