I need my software to be able to run as administrator on Windows Vista (if someone runs it without administrative permissions, it will crash).
When launching other software, I've seen a prompt by the system like "this software will run as administrator. do you want to continue?" when the app was trying to acquire administrative privileges.
How do I request administrative privileges when running an c# app on Windows Vista?
Add the following to your manifest file:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
You can also use highestAvailable for the level.
Look here about embedding manifest files:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
PS: If you don't have a manifest file, you can easily add a new one:
In Visual Studio, right click project -> Add Item -> Choose Application Manifest File ( under General for Visual C# items)
The added file will already have the above part, just change the level to requireAdministrator from asInvoker
Put this XML in a file called yourexename.exe.manifest:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
You need to use the requestedExecutionLevel token in a manifest:
For F# Visual Studio 2013, including a manifest file that request administrator elevation using the FSharp compiler's /win32manifest flag as follows worked for me. So, given a project output named "App.Exe"
Create a file with the following content (for convenience you may add the file to the project. Ensure that it's
Build ActionisNone' andCopy to Output...isDo not copy. By convention such a file is namedApp.Exe.manifest`. If you require uiAccess (User Interface), the assembly must be strongly named.<?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="App" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly>Edit the project dialogue build panel's
Other flags:entry field to include the following:/win32manifest:<ApplicationManifestFile>. For example, in this case,/win32manifest:App.Exe.manifest.
来源:https://stackoverflow.com/questions/7666408/how-to-request-administrator-permissions-when-the-program-starts