7

Today when I was trying to decompile .apk file using WinRAR, I got an error and unzipping terminated. After that when I am trying to delete the folder I am getting an error that I don't have ownership of folder even though I am providing administrator permission.

Error shown while deleting the folder

Image from file explorer of the folder which has a file

Both file and parent folder of the file in the image gives an error when I try to delete it.

Then I tried doing the same using cmd in administrator mode by a command:

rm -d test

output :: rm: cannot unlink `test': Not owner

I also tried the following command to recursively delete files in a folder:

rm -r test

output:rm: WARNING: Circular directory structure. This almost certainly means that you have a corrupted file system. NOTIFY YOUR SYSTEM MANAGER. The following two directories have the same inode number:

test `test/ '

So I tried the following command to delete recursive file structure,

rm -rfd test

output: rm: cannot unlink `test': Not owner

All the above methods I used are either from StackOverflow or Microsoft QnA page but nothing seems to work.

I tried all this in safe mode also. But still, I get the same error. Twice I also got an error with an error code of 0x80070091

Image showing permissions in the security tab of properties window of the folder to be deleted

I already tried taking ownership of folder using takeown command.

takeown /f test /r

Output:

SUCCESS: The file (or folder): "C:\Users\mandar\Desktop\test" now owned by user "MANDAR_SADYE\mandar".

SUCCESS: The file (or folder): "C:\Users\mandar\Desktop\test\ " now owned by user "MANDAR_SADYE\mandar".

I tried all the possible solutions I could find but nothing seems to work. If anyone has any suggestion regarding this issue then please post it as answer or comment as you see fit. Thank you in advance.

5 Answers 5

7

Your problem is that you have a file system entry with a name containing only a space (test\ , note the space after the backslash). This is technically possible in NTFS, but is not at all permitted in Win32 and most Windows APIs will not handle it gracefully at all. They will try to strip the spaces from the ends of the file name, and then get very confused when the filename isn't there anymore and may treat it as though you're referring to the directory; this happens even if you use a format like test\* or " ".

There are two ways out of this within Windows itself.

  1. Bypass the Win32 path translation. This is done by prefixing a fully-qualified path with \\?\. Doing this turns off all of the Win32 rules about what is a valid file name (such as "cannot begin or end with a space"), leaving only the much smaller set of NTFS rules (cannot contain a \ or :, for example). Note that it also turns off convenient shorthands like using relative paths; if you want to do this you must supply an absolute path (C:\Users\mandar\Desktop\test\ ) and you will need to quote it so the command line knows you meant to include that final space: del "\\?\C:\Users\mandar\Desktop\test\ " (and yes, you should be using cmd.exe for this; Powershell ignores the \?\ and Unix-like shells running on Windows via MinGW or Cygwin don't use paths of the format the kernel expects).
  2. Use the native Linux subsystem in Windows (which runs unmodified Linux binaries directly on the NT kernel, through a special driver). Linux (as you found) supports dealing with files that have silly names like and so does WSL, the Windows Subsystem for Linux. If you haven't used WSL before, you'll need to install some Linux distro from the Windows app store (Ubuntu and OpenSUSE are both available and suitable for general use, Kali is also available if you want a special-purpose distro on your Windows box; you can install more than one if you want). From within bash (or other shell) of a WSL distro, navigate to the relevant directory (cd /mnt/c/Users/mandar/Desktop/test) and then delete the offending file (rm ' ') or simply the whole directory.
3
  • Excellent! Worked for me with some programmatically created files
    – Frank
    Jul 23, 2019 at 14:18
  • Thanks. WSL is able to process folders with odd characters that Windows just can't handle.
    – Gruber
    Nov 9, 2019 at 16:15
  • @Mandar Sadye This should be the accepted answer. Dec 31, 2019 at 5:39
1

Run the command chkdsk and see if it finds errors.

For further understanding the errors, it is possible to Read Chkdsk Log in Event Viewer in Windows 10.

If errors are found, and if they don't sound too menacing or there are too many of them, to fix the errors run the command:

chkdsk /f

Ensure having a good backup of your files before starting.

1

Well after many trial and error I found the way to delete it. I found a solution before I could try harrymc's solution, so wasn't able to confirm if his solution works. The way I did it isn't straightforward so I highly recommend trying his solution first and let me know if it works so I can mark it as an acceptable answer.

So the method I followed is to open the folder in the different file system.

  • The way I did it was to delete it through bootable Linux pen drive ( I used Kali but any other distribution should work well.
  • You could try to delete it by sharing the folder to virtual box or VMware virtual machine with Linux and try deleting it.
  • And the third way is to share the folder in your local network and try to delete it from your Android or MAC device connected to the network ( remember android has Linux kernel and MAC has Unix so both should work)

So I guess the problem is with the windows NTFS file system. As you can see with the exception to the third method you need to have some sought of the secondary OS in form of bootable or virtual machine which most people won't have. So try the 3rd solution. If it doesn't work then try harrymc's solution. And if even that doesn't work then you can install a virtual machine or make bootable pen drive and try deleting it.

0

BTW,

If this occurs on a removable USB hard drive, simply connecting the drive after your computer boots and selecting Scan and repair this drive from the prompt that pops up corrected my issue with a corrupted folder.

-1

I've found a fix that works for me.

At the Advanced Security Settings page you need to change to Administrators (with an s at the end otherwise you get Enum errors) and click ok because the 'replace all child ...' option is missing.

Then reopen it and do the same thing again, this time the 'replace all child option is present' so tick that and the 'replace owner on ...' checkbox. Then click ok

You should now be able to Edit to give permission to Administrators. Close that menu again and you should be able to delete.

I'm sure it is either a glitch or something but it works for me.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .