Как запросить администрирование привилегий в Windows с Go
То, что я хочу достичь для моего приложения, - это не, чтобы щелкнуть правой кнопкой мыши и выбрать "Запуск от имени администратора" каждый раз, когда я хочу его запустить. Я хочу, чтобы Windows предложила мне получить права администратора, как и в других приложениях Windows.
рассмотрим следующий код:
package main
import (
"fmt"
"io/ioutil"
"time"
)
func main() {
err := ioutil.WriteFile("C:/Windows/test.txt", []byte("TESTING!"), 0644)
if err != nil {
fmt.Println(err.Error())
time.Sleep(time.Second * 3)
}
}
Если вы скомпилируете его и дважды щелкните по нему, он напечатает:
открыть: C:\Windows\test.txt: доступ запрещен.
Но если вы щелкните правой кнопкой мыши и запустите его как администратор, он создаст и запишет файл.
Как заставить его запрашивать разрешение администратора, просто дважды щелкнув по нему?
Ответы
Ответ 1
Вам нужно вставить файл манифеста , который будет показывать Windows, что вы хотите получить повышенные привилегии.
Пример с этой страницы:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="9.0.0.0"
processorArchitecture="x86"
name="myapp.exe"
type="win32"
/>
<description>My App</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Этот go-nuts post предполагает, что использование rsrc должно сделать трюк для вас.