I have dialog app that requires two external *.exe s to function properly. The most important of these is Init.exe which copies a couple of needed files from the main app root (installation) directory to a User directory on the main app's first run. The main app recognizes a 'first time' run on a given machine and, in response, runs Init.exe from the root directory which in turn creates and copies two other files, a *.dll and another *.exe to the User directory.
If all this seems unecessarily complicated, it has been forced upon me because of the enhanced security of Windows 7. The latter OS will not allow the running of Init.exe to copy files out of Programs Files (x86) without administrative privileges. In fact, any Win 7 program installed in Program Files (x86) is prevented from copying or moving files out of the root directory without administrative privileges. Not only does this create runtime problems for such programs run by non-administrators, but for my program, it simply will not run unless the necessary files are in the User directory.
Now it is easy enough to initialize the user directory manually, or even on first run of the main program, provided administrative privileges are held, but woe to the non-administrator who tries to install and run the program. I appreciate the fact that this added security is a safeguard to prevent any user from installing malicious or damaging software, but it also creates a host of other problems as noted here.
Has anyone devised a workaround to deal with this problem? How do you manage your apps in this regard? Manual setup of the User directory and files is a big thing to ask of the average user. Installation outside of Program Files (x86) is an unappealing option - mainly because Windows Installer does not provide a user-friendly option and the non-administrator installer user would have to know where to install the app - a big order for most users. Reconfiguring the security on a machine is only an option if the machine is not on a network requiring local machine security where administrative privileges are granted to only a select few.
Your thoughts and suggestions most welcome.