Jun 08 2020 02:19 PM
Jun 08 2020 02:19 PM
I have created MSIX for EditPlus 3.50; Eula Agreement & License have been captured in HKCU keys and all the keys were captured in MSIX package.
While I install the MSIX application , app is not able to read the reg keys which are located in registry.dat.
After launching MSIX application, registry.dat will be merged virtually with Physical registry and application can see the registry keys which are captured in registry.dat. But I am not able to see this behavior when I packaged EditPlus MSIX. Application is prompting for serial key again . Any suggestions, please share
I am using Hover (Advanced Installer) to identify if the registry keys were merged virtually or not after the launching application and I see that keys were merged with physical registry after launching the application. Screenshots were attached to this post.
Jun 09 2020 02:30 AM - edited Jun 09 2020 02:31 AM
This sounds like a permissions problem.
TLDR: If you still maintain the code for your app make sure you try to open the registry requiring "READ_WRITE" and not "FULL_ACCESS".
If you don't have access to the code you need PSF, reach out to Tim, based on the linked post, it seems that he is working on a fixup for this issue.
The app opens it's registry keys located under HKCU by opening the key requesting "FULL_ACCESS" (aka "STANDARD_RIGHTS_ALL"), although it only requires "READ_WRITE". This can happen because developers sometimes copy/paste the sample code written in Microsoft documentation without fully thinking about what they really need.
The app functions correctly when installed natively on the latest Windows 10 builds when using the MSI installer. This is because there is no issue in giving the app full access to the vendor HKCU based key, and even if it deleted the key or sub-elements it would only harm this app.
Under MSIX on certain operating systems (1903 and below), these permissions upon opening a key that is part of the package is not supported, even when under HKCU. So currently the MSIX runtime responds to this request with ACCESS_DENIED which breaks the app as the developer never experienced that call failing and does not handle the failure.