In Windows 7 you can hold down the shift key and right click ADUC to get the full context menu. Here you will see two options called “Run as Administrator” and “Run as Different User”. The “Run as Administrator” option makes use of the new User Account Control (UAC) security feature. The good news is if you are logged in with a privileged account and simply run ADUC without any options, the application only has user access to the local machine. This applies even if the account is in the local administrators group. If you run it with the “Run As Administrator” option, UAC elevates the account by combining the second part of the SID with the first part of the SID (SID filtering). The first part describes the regular user account and the second part describes the elevated privileges. This works exactly as it did in Windows Vista. This is Microsoft’s way of solving the issue of companies making every day knowledge workers administrators on their machine and reducing the attack surface. If you select the Run as Administrator option, Windows 7 runs the application using the entire account SID so that the process (and only that process) now has local administrator permissions.
Although user account control was probably the most persecuted new feature after Windows Vista launched, it was actually a really good thing. In my opinion it certainly has a place in the corporate world, but proved to be a daunting inconvenience in the home user world. If you still think UAC is a bad thing and too inconvenient go google “linux +sudo”. Microsoft is not the only one to implement such features. Microsoft has gone to great lengths to keep this security feature in Windows 7, but greatly reduce the annoyance factor of multiple “Allow or Deny” prompts.
The problem is that “Run as Administrator” is a UAC function and should not be used as a “Run As” replacement. Although you can set the “Run as Adminstrator” option to prompt for alternate credentials, that application will run as a local administrator and under the supplied alternate credential. See part 2 of this series for more information. What we really want is for the application to run under the locally logged on non-privileged account and only pass the alternate credentials to the remote application. This where “Run as Different User” comes in. This is the “Run As” replacement and uses the secondary logon service. The issue here as that it works exactly as it did in Windows XP where it uses the supplied alternate credentials to run the local application. Once again we are left without a secure option in the GUI.
Executing “Run As” from the CLI is exactly the same in Windows 7 as it was in Windows Vista (see Part 2). Again it requires elevating the account using UAC, so you might as well just use “Run As Administrator” from the GUI.
The sad part is that although the SysInternals add-on that gave us exactly what we needed in Vista installs in Win 7, it still acts like it did in XP. The application will run under the supplied alternate credentials on the local box instead of just supplying them to the remote application.
My suggestion for the most secure option for each OS would be…
XP – Use “Run As” from the command line and supply the /netonly switch
Vista – Download the SysInternals add-on called Shellrunas. Use it from the GUI and always select the one labeled “netonly”.
Windows 7 – Use the “Run As Different” user option from the GUI. It is the worst option of the 3 but the only viable one. Let’s cross our fingers that MS will put out another Shellrunas add-on through SysInternals.