I have a tool written in C# which performs impersonation of users to perform administrative tasks on remote machines.
I have found that using LOGON32_LOGON_NEW_CREDENTIALS with LOGON32_PROVIDER_DEFAULT defeats UAC when impersonating the built-in administrator account of the remote machine, or when impersonating a domain user who is in the administrators group. However, when a non built-in local user is impersonated (local to the remote machine), a non-elevated token is returned. Creating a user with the same credentials on both machines does not alleviate the problem.
This table shows success in acquiring an elevated token for use on the remote computer:
graph showing working scenarios http://img521.imageshack.us/img521/3605/fo69.png
All users are in the Administrators group.
Is there a know solution to this problem that does not involve turning off UAC or doing anything drastic on the target computer? The remote computer is customer controlled and no modifications can be made. It is assumed UAC is and should be running on both ends.
As a point of interest but not to detract from the above question, the exact same behaviour is found when using remote WMI.