How to self-elevate an application to a high privilege level under UAC

Article translations Article translations
Article ID: 981778 - View products that this article applies to.
Rapid publishing disclaimer
Microsoft corporation and/or its respective suppliers make no representations about the suitability, reliability, or accuracy of the information and related graphics contained herein. All such information and related graphics are provided "as is" without warranty of any kind. Microsoft and/or its respective suppliers hereby disclaim all warranties and conditions with regard to this information and related graphics, including all implied warranties and conditions of merchantability, fitness for a particular purpose, workmanlike effort, title and non-infringement. You specifically agree that in no event shall Microsoft and/or its suppliers be liable for any direct, indirect, punitive, incidental, special, consequential damages or any damages whatsoever including, without limitation, damages for loss of use, data or profits, arising out of or in any way connected with the use of or inability to use the information and related graphics contained herein, whether based on contract, tort, negligence, strict liability or otherwise, even if Microsoft or any of its suppliers has been advised of the possibility of damages.
Expand all | Collapse all

On This Page

INTRODUCTION

This article describes an All-In-One Code Framework sample that is available for downloading. The code sample is related to User Account Control (UAC), a security component in Windows Vista and in newer versions of Windows operating systems. When UAC is fully enabled, interactive administrators typically run with the least user privileges. This code sample shows how to self-elevate an application to a high privilege level by giving explicit consent through the Consent UI.

Difficulty level

Collapse this imageExpand this image
codefx Medium

Download information

To download this code sample, click the following link:

    

Technical overview

UAC was introduced in Windows Vista. When UAC is fully enabled, interactive administrators typically run with the least user privileges. However, interactive administrators can self-elevate by giving explicit consent with the Consent UI. Interactive administrators perform administrative tasks that include installing software and drivers, changing system-wide settings, viewing or changing other user accounts, and running administrative tools.

This code sample shows the following technical points in three popular programming languages (Visual C++, Visual C#, Visual Baisc.NET):
  • How to display a UAC shield icon on the UI for tasks that require elevation.
  • How to self-elevate the current process.
  • How to automatically elevate the process when it starts up.

Demonstration

Follow these steps for a demonstration of this UAC code sample:
  1. After you successfully build the sample project in Visual Studio 2008, you receive the following application files, depending on the programming language that you are using:
    • CppUACSelfElevation.exe
    • CSUACSelfElevation.exe
    • VBUACSelfElevation.exe
  2. Run the application as a protected administrator in a Windows Vista or Windows 7 system that has UAC fully enabled. The application should display the following content in the main dialog box:
    Collapse this imageExpand this image
    PUBLIC\EN-US\codefx\981778a

    Note There is a UAC shield icon on the Self-elevate button.
  3. Click the Self-elevate button. Then, you see the following Consent UI:
    Collapse this imageExpand this image
    PUBLIC\EN-US\codefx\981778b
  4. Click Yes to approve the elevation. Then, the original application restarts, running as an elevated administrator.
  5. Close the application.
Note For more information about how to create the sample application, see the Readme.txt file that is included in the download package.

Technology category

  • Security

Languages

This code sample contains the following programming languages.
Collapse this tableExpand this table
LanguageProject Name
Visual C++ .NETCppUACSelfElevation
Visual C#CSUACSelfElevation
Visual Basic .NETVBUACSelfElevation

Prerequisites

  • You must run this code sample in Windows Vista or in a later Windows operating systems.
  • This sample application was created by using Visual Studio 2008 with Service Pack 1 installed.

Tags

  • UAC

MORE INFORMATION

What is All-In-One Code Framework?

All-In-One Code Framework uses code samples in different programming languages to illustrate most Microsoft development techniques. Each code sample is carefully selected, composed, and documented to show common code scenarios. For more information about All-In-One Code Framework, visit the following All-In-One Code Framework Web site:
About All-In-One Code Framework

How to find more All-In-One Code Framework samples

To find more All-In-One Code Framework samples, search for "kbcodefx" together with related keywords on the Microsoft support Web site. Or, visit the following Microsoft Web site:
All-In-One Code Framework samples

REFERENCES

For more information, visit the following Microsoft Developer Network (MSDN) Web sites:
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properties

Article ID: 981778 - Last Review: November 1, 2010 - Revision: 2.0
APPLIES TO
  • Microsoft Visual Studio 2008 Service Pack 1
  • Microsoft Visual Studio 2008 Academic Edition
  • Microsoft Visual Studio 2008 Professional Edition
  • Microsoft Visual Studio 2008 Standard Edition
  • Microsoft Visual Studio Team System 2008 Database Edition
  • Microsoft Visual Studio Team System 2008 Architecture Edition
  • Microsoft Visual Studio Team System 2008 Development Edition
  • Microsoft Visual Studio Team System 2008 Team Suite
Keywords: 
kbexpertiseadvanced kbsurveynew kbinfo kbnomt kbrapidpub kbcodefx atdownload KB981778

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com