Library code snippets
Making a .NET app run on Vista with Administrator priviledges
First, add a manifest file to the root of your .NET executable project - you can do this by selecting "Add New Item" and picking "Application Manifest File". Alternatively just create a blank file called "app.manifest". The standard template that Visual Studio gives you looks like this:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
The key part is the requestedExecutionLevel mode - which by default is set to "asInvoker". This means that the application will run under the priviledges of whoever started the application - remembering that under UAC even administrators on windows Vista are running as Users until they elevate their permissions.
If your application always requires administrator priviledges, then you can change this value to "requireAdministrator". Now, whenever your application starts it will always trigger UAC and ask the user to allow administrator access for your program.
Note that it's worth seriously considering whether you actually need to do this, and why - especially given the intrusive experience of UAC. For instance, you shouldn't need to write settings to Program Files, as Windows provides the user profile area and registry for just that purpose. In general UAC should hopefully force us all to think a bit more carefully about where we're storing data, and what permissions the application *really* needs.
Related articles
Related discussion
-
hey developers out there
by pitsophera (0 replies)
-
How can i develop opc server using .net?
by vairajaig (1 replies)
-
Creating a Windows Service in VB.NET
by davidvanr (108 replies)
-
High-Performance .NET Application Development & Architecture
by Manjot Bawa (0 replies)
-
An Introduction to VB.NET and Database Programming
by carlosmen (14 replies)
Related podcasts
-
A Practical Look at Silverlight 2 Part 1
Now that Silverlight 2 is at the Olympics and making a big splash, we wanted to explore this fascinating technology more. Microsoft Silverlight 2 is a cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of .NET based media experiences and rich interactive ap...
Events coming up
-
Dec
9
GL.net Group Meeting - December 2009
Gloucester, United Kingdom
The beginning of this year holiday season will belong to mocks. Ronnie and Stephen will take us for a tour around exciting world of unit testing.
its a great code, thanks nowadays there are many sell own software sites and they offer everything for money so i appreciate you help, thanks
!--removed tag-->* Thanks
!--removed tag-->This thread is for discussions of Making a .NET app run on Vista with Administrator priviledges.