dokany
dokany copied to clipboard
Implementing volume Icon change Helper
Hello, I was wondering if it's possible to implement missing features, such as InstallIcon() and SetIcon() for changing the disk's icon.
Thanks!
I took the liberty to rename your issue, I like dedicated issue when possible :smile: Icon is not really a file system feature but a Windows Explorer feature ; maybe we can provide an helper on DokanLibrary yes.
Two ways that I know to change drive icon:
- The hard way: using icon overlay shell extension
- The simple way: changing registry key like
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\M\DefaultIconwhere M is your dokan drive by setting default value to your icon path for instance
On current OS versions, I don't see any reason to use the hard way as setting registry key do the trick and work well with Dokan drives too.
The icon can be specified in the newly mounted volume FS, please refer to the link below
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144102(v=vs.85).aspx
basically add an icon file and a desktop.ini file to the root of the volume and set the system attribute of both files, I believe the hidden attribute is optional.
[Screen shot of custom icon replacing folder icon] The following desktop.ini file was used to customize the Music folder, as seen in the preceding illustrations. [.ShellClassInfo] ConfirmFileOp=0 NoSharing=1 IconFile=Folder.ico IconIndex=0 InfoTip=Some sensible information.
From: shlatchz [mailto:[email protected]] Sent: Monday, August 31, 2015 5:32 PM To: dokan-dev/dokany [email protected] Subject: [dokany] Implementing missing features (#51)
Hello, I was wondering if it's possible to implement missing features, such as InstallIcon() and SetIcon() for changing the disk's icon.
Dokan vs. CBFShttps://www.eldos.com/cbfs/dokan-to-cbfs.php
Thanks!
— Reply to this email directly or view it on GitHubhttps://github.com/dokan-dev/dokany/issues/51.
I think the same key exists in HKCU. You can't change values of HKLM if you are not an administrator. Overlay shell is used for other purposes (synced, pending, deleted) like state of a file.
If the software is running only once and the drive is visible to all users the HKLM must be used.
In generally the concept of desktop.ini and autorun.inf should also be ckecked. No permission issues.
I tried adding a value to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\M\DefaultIcon
and it works great, but the new icon changes both the icons (1), (2) in the following image, when I want them to be different. I want to configure an icon for (1) and another for (2).

Thanks!
Right, thanks for the additional information everybody.
@shlatchz That's not possible as far as I know. If you visually want a different icon you will only be able to do that on the same ico file based on the different embedded sizes.
@Maxhy
It worked! Thanks :+1:
This feature request is valid :+1:
But the Dokan team have other issues to manage for now.
So if someone have a great :heart: to propose a pull request. I would be happy to review it personally !
I was just trying to do this, I set the file attributes to FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN and this is my autorun.inf file:
[Autorun]
icon=autorun.ico
But for some reason it does not show that icon, even though the file on the drive shows it as a thumbnail.
When I copy the icon off the Dokan drive it has the same hash as the source file, so I do not think that would be the problem.
On the same machine, mounting the Windows 10 ISO does show the custom icon that it has in autorun.inf, the only difference I see is the way they are mounted and the fact that the Windows ISO is using an EXE for the icon.