Installers and UAC "heuristics"
-
Check this, I have a custom installer I made, it worked great in all win OSs, until Vista. With Vista, it works great with UAC turned off. If I turn on UAC, the heuristics detects that my program needs elevation, ok I understand that. Now, the big question is, what is the difference between my installer called pete.exe or caller instalar.exe? Well, If my installer is called "instalar" (install in spanish), it hangs up in the middle of the instalation, in different places, like getting an already installed component version, or creating a desktop shortcut. If my installer is called "pete", it works great, I dont see any problem. I dont know what to think... My installer isn't signed. Something is changing depending the .exe name. Anyone saw something like this? Should I use exe names Hax0r style to avoid this? my .exe should be called 1nst4l4r?
-
Check this, I have a custom installer I made, it worked great in all win OSs, until Vista. With Vista, it works great with UAC turned off. If I turn on UAC, the heuristics detects that my program needs elevation, ok I understand that. Now, the big question is, what is the difference between my installer called pete.exe or caller instalar.exe? Well, If my installer is called "instalar" (install in spanish), it hangs up in the middle of the instalation, in different places, like getting an already installed component version, or creating a desktop shortcut. If my installer is called "pete", it works great, I dont see any problem. I dont know what to think... My installer isn't signed. Something is changing depending the .exe name. Anyone saw something like this? Should I use exe names Hax0r style to avoid this? my .exe should be called 1nst4l4r?
there was a thread not long ago about that; and it seems Vista tries to determine what kind of software is running according to its name. funny, no ?
Maximilien Lincourt Your Head A Splode - Strong Bad
-
there was a thread not long ago about that; and it seems Vista tries to determine what kind of software is running according to its name. funny, no ?
Maximilien Lincourt Your Head A Splode - Strong Bad
-
Check this, I have a custom installer I made, it worked great in all win OSs, until Vista. With Vista, it works great with UAC turned off. If I turn on UAC, the heuristics detects that my program needs elevation, ok I understand that. Now, the big question is, what is the difference between my installer called pete.exe or caller instalar.exe? Well, If my installer is called "instalar" (install in spanish), it hangs up in the middle of the instalation, in different places, like getting an already installed component version, or creating a desktop shortcut. If my installer is called "pete", it works great, I dont see any problem. I dont know what to think... My installer isn't signed. Something is changing depending the .exe name. Anyone saw something like this? Should I use exe names Hax0r style to avoid this? my .exe should be called 1nst4l4r?
Add a UAC manifest to the EXE's resources and specify what level of privs it needs - since it's an installer, you'll probably use
requireAdministrator
.--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Dunder-Mifflin, this is Pam.
-
yeap, i knew about that, is used to support legacy installers... But the strange thing is that my installer works if the name is different from the "installer keywords" I dont understand...
If you run an exe without a manifest with a security section in it and UAC does not deem the exe an installer, it will leave virtualization turned on so any attempt to write to the Program Files directory or HKLM will be redirected to the logged in users profile instead. Kinda like a per user install versus a per machine but in a UAC twisted kinda way. Try logging in as someone else and see if the application shows up.
-
Add a UAC manifest to the EXE's resources and specify what level of privs it needs - since it's an installer, you'll probably use
requireAdministrator
.--Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Dunder-Mifflin, this is Pam.
Thanks, I added the manifest and now it seems to work fine. The UAC heuristics was detecting my app as an installer but I don't know why if my app had an "installer name" it failed. Some guy told me that the problem probably was originated by the compatibility heuristics that simulate an older Win version.
-
If you run an exe without a manifest with a security section in it and UAC does not deem the exe an installer, it will leave virtualization turned on so any attempt to write to the Program Files directory or HKLM will be redirected to the logged in users profile instead. Kinda like a per user install versus a per machine but in a UAC twisted kinda way. Try logging in as someone else and see if the application shows up.
My app after beign elevated was running with vitualization turned off. I don't know the difference among a normal elevated app, an unsigned installer and a signed installer. Is pretty obvious there are differences, but people from MS dont want to explain them it seems.