I have a program that needs to create files in the My Document directory on installation. This is a strict fixed requirement, there is no changing this. Problem is that if the user does 'Run As Administrator' on the Setup file, innosetups constant {userdocs} points to the Administrator's document directory not the original logged in user.
So, Googled and found this:
Install files to original user's My Docs folder via Inno Setup on Windows Vista/7
The answer is wrong, however, because innosetup even states that
If a user launches Setup by right-clicking its EXE file and selecting "Run as administrator", then this flag, unfortunately, will have no effect, because Setup has no opportunity to run any code with the original user credentials. The same is true if Setup is launched from an already-elevated process. Note, however, that this is not an Inno Setup-specific limitation; Windows Installer-based installers cannot return to the original user credentials either in such cases.
I guess I can encourage the user to not use Run As Administrator but I don't know how to prevent him from not coming in elevated.
I was thinking of maybe having the program itself set up the My Documents\Program name directory on first run (after being installed). Would this workaround work? It'd have to copy files from its program files directory as potentially limited user. Is it possible or will I run into priveleges problems?