Windows 在Go中请求UAC高程

Windows 在Go中请求UAC高程,windows,winapi,go,uac,Windows,Winapi,Go,Uac,在Go中有没有办法将新进程或线程提升到管理员 似乎ShellExecute在Go中不可用,并且无法使用CreateProcess进行提升。我不知道还有什么是可能的。你可以试着检查一下这个项目:它有一个可能有用的方法 w32是Go编程语言的windows API包装器 它包装了win32 API to Go样式,使其更易于使用 更新2020,自2014年起,该软件包确实具有功能 提到的博客文章 Jeremy首先通过尝试打开\\.\PHYSICALDRIVE0来检测程序是否已作为管理员运行 _,错误

在Go中有没有办法将新进程或线程提升到管理员


似乎ShellExecute在Go中不可用,并且无法使用CreateProcess进行提升。我不知道还有什么是可能的。

你可以试着检查一下这个项目:它有一个可能有用的方法

w32是Go编程语言的windows API包装器

它包装了win32 API to Go样式,使其更易于使用

更新2020,自2014年起,该软件包确实具有功能

提到的博客文章

Jeremy首先通过尝试打开\\.\PHYSICALDRIVE0来检测程序是否已作为管理员运行

_,错误:=os.Open\\.\\PHYSICALDRIVE0 然后Jeremy使用ShellExecute函数,从

func runMeElevated{ 动词:=符文 exe,979;:=os.Executable cwd,ww:=os.Getwd args:=strings.Joinos.args[1:], verbPtr,:=syscall.UTF16PtrFromStringverb exePtr,:=syscall.UTF16PtrFromStringexe cwdPtr,:=syscall.UTF16PtrFromStringcwd argPtr,:=syscall.UTF16PtrFromStringargs var showCmd int32=1//SW_NORMAL 错误:=windows.ShellExecute0、verbPtr、exePtr、argPtr、cwdPtr、showCmd 如果错误!=零{ 打印错误 } } CreateProcess不支持运行提升的进程,但以下文章中有一个第三方CreateProcessHighted函数可以:


它还提供了其他几个函数的提升版本,包括CreateProcessAsUserElevated和ShellExecuteElevated。

SE_ERR\u DDEBUSY:将批准。谢谢,这正是我需要的。工作起来很有魅力。顺便说一句:看起来也很有用。