cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Image Transfer Utility and wrong security permissions on Windows

lbit
Contributor

I have a PowerShot G7 X II and use the Image Transfer Utility (ITU) to transfer images via Wifi from the camera to a Win10 pc. 

My intent is to transfer images to the standard windows directory for images shared among all pc accounts, that is C:\User\Public\Pictures, so all family members (all of whom have a personal account on this pc) can see and use these photos.

In fact, all photos I manually save in this location are indeed accessible by all family memebrs, however images saved by the ITU are NOT. That is, all photos I transfer with ITU are correctly saved in C:\User\Public\Pictures but the security permissions of the files allow access only to me (that is, the account I used to run the utility) and are inaccessible to all other family members.

Note that the Windows ACL (security permissions) for that folder are the windows default ones, that is, allowing access to all accounts and with subfiles and subdirs inheritance enabled. So any new files created there should receive the same permissions and be accessible by all accounts. But ITU saved phots are NOT. In order to fix their permissions I need to right-click the public picture folder and click the button to re-apply inheritable permissions to all subfiles/folders.

After some investigation I have found that the ITU actually first creates the downloaded photos in a temporary directory under my account (C:\User\myaccount\AppData\Local\...) and after the download is completed, it moves the file in the final destination folder. When it first creates the file in the temp dir, since that's an account specific temp dir, it has access permissions ONLY for the current account (which is OK). When the file is moved to the final destination, it should inherit the configured permission for the destination, but this doesn't happen.

It seems this is caused by how the file is created in the destinaton folder,i.e. it is actually moved there and not copied and the destination is on the same NTFS volume. Depending on how exctly the file is moved, Windows may or may not update the file ACL. See e.g. this discussion (the fourth point and big quoted paragraph) and this possible solution.

Have you seen this same behaviour or is there any known workaround? Is there any hope to get ITU fixed?

 

 

 

 

 

1 ACCEPTED SOLUTION

Hey,

Canon doesn't seem to care or understand the issue, so there are only two possible workarounds that I know of.

First one is to change the permissions of the TMP dir where ITU saves temporary images, that is (usually) [username]/appdata/local/temp/ImageTransferUtility, as don2737 has written above here.

Drawbacks of this workaround are that you may need to do it for multiple users and that everytime you run a windows cleanup of the drive, it deletes the tmp/ImageTranferUtility directory together with your custom permissions, so you will need to set permissions again. (update: windows own cleanup utility doesn't seem to ever clean a user's tmp dir, but other tools may do it).

Second one is to run ITU with a different value for the TMP environment variable. In this case you can either set TMP to another directory on the same drive as your final image destination but with the permissions that you want, or (better) set TMP to any dir of another drive. If you set TMP to a dir on another drive, when ITU moves the files from TMP to the final destination dir, it correctly applies the permissions configured on the final destination directory (of course you need to have a second drive, like D:, for this approach).

In order to run ITU with a modified TMP (but without modifying TMP globally), you can e.g. modify the shortcut to run ITU to something like:

C:\Windows\System32\cmd.exe /d/c "SET TMP=D:\Temp && start """Launching ITU""" """C:\Program Files (x86)\Canon\ImageTransferUtility\ImageTransferUtility.exe""""

In my case, my final destination is 

C:\User\Public\Pictures

and I run ITU with TMP set to 

D:\Temp

and this fixes the issue for me.

This is for ITU v1.x, which is the only one I can use with my PowerShot G7X Mark II. Now Canon has released ITU v2.x, but that supports G7X only from Mark III, so not working for me. Canon doesn't seem to care about releasing a firmware update for the Mark II to make it work with ITU v2.x. Anyway, I have no idea if ITU v2.x has this same issue as ITU v1.x as I cannot try it.

View solution in original post

7 REPLIES 7

I have contacted Canon support, however up to now (after 6 emails) they keep misunderstanding the problem and claiming that, "if you want a directory to be accessible by other users, you have to give those permissions yourself". I have already answered twice that the directory already has correct permissive rights (and that, in fact, those permissions are even Windows's own default for the C:\User\Public\Pictures" dir), but up to now they still don't seem see the issue with how they "save" the transfered images.

Hi, lbit!


If there seems to be trouble in conveying the specifics of your issue via email, we recommend calling our friendly support team instead. Talking live with one of our friendly agents could be beneficial, and the real-time assistance could help you reach a resolution faster without having to wait for email correspondence.


You can reach our PowerShot camera team weekdays from 10 AM to 10 PM ET (7 AM to 7 PM PT) at 1-800-OK-CANON (1-800-652-2666).


We look forward to your call!

don2737
Apprentice

I solved it!

Change the permissions on the hidden folder where the images are first created. Which is [username]/appdata/local/temp/ImageTransferUtility

 

I'm not sure how many share permissions are required, I just set that directory to share with "everyone", permissions set to "read/write", and special permissions I set all child objects to inherit the folder's permissions.  Maybe all that isn't necessary, but now when the images are created in that hidden folder they are created with permissions to share across the network.  Then the utiility moves them as soon as they are created to whatever folder you directed it to when you set it up. 

 

Maybe someone can experiment with the minimum sharing security needed, but this worked. 

Hey,

Canon doesn't seem to care or understand the issue, so there are only two possible workarounds that I know of.

First one is to change the permissions of the TMP dir where ITU saves temporary images, that is (usually) [username]/appdata/local/temp/ImageTransferUtility, as don2737 has written above here.

Drawbacks of this workaround are that you may need to do it for multiple users and that everytime you run a windows cleanup of the drive, it deletes the tmp/ImageTranferUtility directory together with your custom permissions, so you will need to set permissions again. (update: windows own cleanup utility doesn't seem to ever clean a user's tmp dir, but other tools may do it).

Second one is to run ITU with a different value for the TMP environment variable. In this case you can either set TMP to another directory on the same drive as your final image destination but with the permissions that you want, or (better) set TMP to any dir of another drive. If you set TMP to a dir on another drive, when ITU moves the files from TMP to the final destination dir, it correctly applies the permissions configured on the final destination directory (of course you need to have a second drive, like D:, for this approach).

In order to run ITU with a modified TMP (but without modifying TMP globally), you can e.g. modify the shortcut to run ITU to something like:

C:\Windows\System32\cmd.exe /d/c "SET TMP=D:\Temp && start """Launching ITU""" """C:\Program Files (x86)\Canon\ImageTransferUtility\ImageTransferUtility.exe""""

In my case, my final destination is 

C:\User\Public\Pictures

and I run ITU with TMP set to 

D:\Temp

and this fixes the issue for me.

This is for ITU v1.x, which is the only one I can use with my PowerShot G7X Mark II. Now Canon has released ITU v2.x, but that supports G7X only from Mark III, so not working for me. Canon doesn't seem to care about releasing a firmware update for the Mark II to make it work with ITU v2.x. Anyway, I have no idea if ITU v2.x has this same issue as ITU v1.x as I cannot try it.

I have not had that problem of the temp directory ( [username]/appdata/local/temp/ImageTransferUtility) being removed during a drive cleanup.  I only ever use the built in windows disc cleanup, so maybe that is it. 

Don

Known workarounds are described above. You can also contact Canon and raise the issue with them: if they get multiple complaints they may finally decide to invest the 5 minutes required to understand the issue (i.e. not by the first level support that seems capable only of spitting out useless automatic replies) and fix it.... 

Could you specify which version of ITU you have the problem with?

Announcements