Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementing volume Icon change Helper #51

Open
shlatchz opened this issue Aug 31, 2015 · 8 comments
Open

Implementing volume Icon change Helper #51

shlatchz opened this issue Aug 31, 2015 · 8 comments

Comments

@shlatchz
Copy link

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. CBFS

Thanks!

@Maxhy Maxhy changed the title Implementing missing features Implementing volume Icon change Helper Sep 1, 2015
@Maxhy
Copy link
Member

Maxhy commented Sep 1, 2015

I took the liberty to rename your issue, I like dedicated issue when possible 😄
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\DefaultIcon where 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.

@joepperkins
Copy link

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:notifications@github.com]
Sent: Monday, August 31, 2015 5:32 PM
To: dokan-dev/dokany dokany@noreply.github.com
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//issues/51.

@marinkobabic
Copy link
Contributor

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.

@shlatchz
Copy link
Author

shlatchz commented Sep 1, 2015

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).

Image

Thanks!

@Maxhy
Copy link
Member

Maxhy commented Sep 1, 2015

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.

@shlatchz
Copy link
Author

shlatchz commented Sep 1, 2015

@Maxhy

It worked! Thanks 👍

@Liryna
Copy link
Member

Liryna commented Sep 16, 2015

This feature request is valid 👍

But the Dokan team have other issues to manage for now.

So if someone have a great ❤️ to propose a pull request.
I would be happy to review it personally !

@gudenau
Copy link

gudenau commented Aug 26, 2017

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants