"Superfreak3" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> We have an .exe that fires off to read an .ini file to grab some
> version information, which is in turn used to determine if our
> automated update process should be fired off. The ini file we are
> trying to find is located in
>
> Users\<UserA>\AppData\Roaming\MyCompany\MyApp\
>
> UserA is a Standard User with UAC enabled. When I attempt to fire
> the .exe, I am prompted for Credentials of an Administrator. The
> credentials applied are for Administrator UserB.
>
> After applying the proper credentials, the application indicates that
> the Server Share (ini location) could not be found. After doing some
> debugging via log writes, I see that, after applying credentials, it
> is looking in the User location of UserB (Admin used to apply
> credentials). Instead of looking to the logged on user's path
The user that invoked the application is irrelevent at this point. When you
entered the credentials for UserB the application was started as UserB and
that's who is running it.
> I'm using SHGetSpecialFolderPath(0, Buf, CSIDL_APPDATA, 0); to get the
> user folder if that leads to anything.
>
> Is there any way in VISTA to get this to work properly for the logged
> on Standard user (UserA) instead of looking to the user whose
> credentials were applied to allow our .exe's execution?
If the app can be revised so that it does not require elevation then it can
be run as UserA and you'll find the right INI file
If not, one option may be to split the app into 2 parts and have a front-end
which determines the path to the INI file and passes that as a command-line
argument (or whatever method you prefer) to a second app which is run as
UserB. Another option might be to have the app search for local user
profiles and prompt to select one. You could also look into trying to
determine the name of the console desktop user although is you're going to
support terminal services and other remote access types that may bring a new
set of problems.
Basically, if your app requires administrative privileges then it must be
run as an administrator username. It'd be nice if answering the UAC prompts
gave the app the new rights but kept the old username but that's not how it
works.
|