-
Notifications
You must be signed in to change notification settings - Fork 673
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
Error 0x800704b3 when attempting to start executable from drive #132
Comments
Do you have an example of executables that create such behaviour that I can test ? |
It's a result for most exes. You can test it with e.g. http://www.irfanview.info/files/iview441g_x64_setup.exe |
Not sure if it is related but you can give a try by yourself using mountmanager branch if you want. The branch is quite stable now, only network drives are not working and need to be fixed. |
Same issue with the mountmanager-Branch, as far as I can tell (the dokan_install would not build in that branch so I used my WiX setup project. Only difference is removal of mounter.exe service?). |
Can you reclone the repository and retry the branch. An old branch with the same name was existing some days ago. (you probably link to the old branch) |
Sorry, my mistake, my system had NSIS 2.46, not NSIS3 in the expected folder. Installer builds correctly with NSIS3. |
Ok ! |
@js69 I have reproced your issue. I made it work by launching it from a cmd.exe with admin rights. |
I can confirm it works from a Admin cmd.exe but It also gives the same error when attempting to "Run as administrator" from Explorer. |
Yes, I can just say that it is not a dokan issue but more a behaviour in the mirror.exe that is wrongly handled for this case since by command line with admin rights it work. (Explorer run as current user) |
DokanNet GetFileSecurityProxy returns DokanResult.BufferOverflow without admin rights, with admin rights that does not happen. |
@js69, The BufferOverflow is normal and also happen in the mirror.exe. Otherwise I do not know what is happening. I see that the security informations requested are different from the admin to the user. Therefore I would say that GetFileSecurity is working but it is another call that the system dont like. I have not really the time to look on it with the mountmanager branch that need to be finished, if someone could look at this it would be great ! |
Your issue seems to be related to UAC. https://www.osronline.com/showthread.cfm?link=168276 If you create a simple executable which does not require UAC prompt and create the same executable with a minifest file which requests the UAC prompt and test it. The one with UAC prompt will fail. Please can you confirm this behavior? |
From what I tested with a few executables that seems indeed to be a factor. If the exe does not require admin rights by itself, it will start. Supplying a manifest file with "requireAdministrator" does not change anything for non-admin exes, neither does supplying a manifest file with "asInvoker" change a thing for admin exes. Turning UAC off (i.e. to the lowest level) does not change anything either. |
Please can you test the following workaround: Did the stuff work before the change of Mount Manager? I mean the version with mount service. |
I think it's the Zone.Identifier which is causing some problems in Dokan. Type the following notepad C:\Users\xx\Downloads\iview441g_setup.exe:Zone.Identifier and you will get an output like the following one [ZoneTransfer] Please try then the following: https://technet.microsoft.com/de-de/sysinternals/streams and then copy the exe file to dokan drive and let me know if it then works |
Hi @marinkobabic , I tested https://technet.microsoft.com/en-us/library/ee844140(v=ws.10).aspx and got the same behaviour.
I tried to start it but unfortunately the behaviour is the same 😢 |
if MirrorGetVolumeInformation looks the following way, then the stuff should work properly static NTSTATUS DOKAN_CALLBACK MirrorGetVolumeInformation(
LPWSTR VolumeNameBuffer, DWORD VolumeNameSize, LPDWORD VolumeSerialNumber,
LPDWORD MaximumComponentLength, LPDWORD FileSystemFlags,
LPWSTR FileSystemNameBuffer, DWORD FileSystemNameSize,
PDOKAN_FILE_INFO DokanFileInfo) {
UNREFERENCED_PARAMETER(DokanFileInfo);
wcscpy_s(VolumeNameBuffer, VolumeNameSize, L"DOKAN");
*VolumeSerialNumber = 0x19831116;
*MaximumComponentLength = 256;
*FileSystemFlags = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES |
FILE_SUPPORTS_REMOTE_STORAGE | FILE_UNICODE_ON_DISK |
FILE_PERSISTENT_ACLS;
wcscpy_s(FileSystemNameBuffer, FileSystemNameSize, L"FAT");
DbgPrint(L" returning file system name: FAT\n");
return STATUS_SUCCESS;
} This is what RamDisk example from Microsoft does. There are many other filesystems and those work properly so the workaround above can't be the solution. |
Oh @marinkobabic 😗 !!! Should we rename the FileSystemNameBuffer to FAT in the mirror by default ? Line 51 in 1534370
|
We need to go on with investigations and solve the issue in a proper way. There are many other filesystems and those work also properly on Windows. So dokan will work as well, but it takes some time to figure out what is the source of the problem. |
I can confirm it works with DokanNet as well when I set fileSystemName = "FAT". It also works with "NTFS". |
Indeed after further investigation this is kind of normal (Windows point of view 💀). Any file system name can be set here, but since Windows Vista (since UAC strangely...) it seems that Windows doesn't start elevated processes from file systems other than NTFS and FAT, and from what I read but not tested FAT32, CDFS, NPFS, MSFS or UDF would be fine too. Probably for security reasons at start and the implementation was simplified by Microsoft engineers. EDIT with sources: |
Tested with mirror.exe: when I attempt to start most executables from the virtual drive I get an error 0x800704b3 "The network path was either typed incorrectly, does not exist, or the network provider is not currently available."
Can I assume this is related to #47 as well?
The text was updated successfully, but these errors were encountered: