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 Action
isNone' and
Copy to Output...is
Do not copy. By convention such a file is named
App.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