Potrzebuję mojego oprogramowania, aby móc działać jako administrator w systemie Windows Vista (jeśli ktoś uruchomi je bez uprawnień administracyjnych, ulegnie awarii).
Podczas uruchamiania innego oprogramowania system wyświetlał komunikat typu „To oprogramowanie będzie działać jako administrator. Czy chcesz kontynuować?” gdy aplikacja próbowała uzyskać uprawnienia administracyjne.
Jak zażądać uprawnień administratora podczas uruchamiania aplikacji C # w systemie Windows Vista?
c#
windows
windows-7
windows-vista
Arsen Zahray
źródło
źródło
Odpowiedzi:
Dodaj do swojego pliku manifestu:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Możesz również użyć
highestAvailable
dla poziomu.Spójrz tutaj na osadzanie plików manifestu:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
PS: Jeśli nie masz pliku manifestu, możesz łatwo dodać nowy:
Dodany plik będzie już zawierał powyższą część, wystarczy zmienić poziom na
requireAdministrator
zasInvoker
źródło
Umieść ten XML w pliku o nazwie 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>
źródło
Musisz użyć
requestedExecutionLevel
tokena w manifeście:http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/
źródło
W przypadku programu F # Visual Studio 2013, w tym plik manifestu, który żąda podniesienia uprawnień administratora przy użyciu flagi kompilatora FSharp w
/win32manifest
następujący sposób, działał dla mnie. Tak więc, mając dane wyjściowe projektu o nazwie „App.Exe”Utwórz plik z następującą zawartością (dla wygody możesz dodać plik do projektu. Upewnij się, że jest
Build Action
toNone' and
Copy to Output ...is
Nie kopiuj. By convention such a file is named
App.Exe.manifest`. Jeśli potrzebujesz uiAccess (User Interface), zestaw musi mieć silną nazwę.<?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>
Edycja dialogu projekt budować panelu
Other flags:
pole wprowadzania aby zaliczyć:/win32manifest:<ApplicationManifestFile>
. Na przykład w tym przypadku/win32manifest:App.Exe.manifest
.źródło