首页 > 系统相关 >go 程序在windows 下已管理员方式启动

go 程序在windows 下已管理员方式启动

时间:2023-08-09 11:35:17浏览次数:37  
标签:err windows UTF16PtrFromString fmt syscall 管理员 go os admin

func AmAdmin() bool {
	_, err := os.Open("\\\\.\\PHYSICALDRIVE0")
	if err != nil {
		fmt.Println("admin no")
		return false
	}
	fmt.Println("admin yes")
	return true
}

func RunMeElevated() {
	verb := "runas"
	exe, _ := os.Executable()
	cwd, _ := os.Getwd()
	args := strings.Join(os.Args[1:], " ")

	verbPtr, _ := syscall.UTF16PtrFromString(verb)
	exePtr, _ := syscall.UTF16PtrFromString(exe)
	cwdPtr, _ := syscall.UTF16PtrFromString(cwd)
	argPtr, _ := syscall.UTF16PtrFromString(args)

	var showCmd int32 = 1 //SW_NORMAL

	err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
	if err != nil {
		fmt.Println(err)
	}
}

调用

func main() {
	if !common.AmAdmin() {
		fmt.Printf("is not admin ,will close and open again as admin")
		common.RunMeElevated()
		return
	}

// 写你的业务逻辑
}

标签:err,windows,UTF16PtrFromString,fmt,syscall,管理员,go,os,admin
From: https://www.cnblogs.com/ifnk/p/17616380.html

相关文章

  • windows11 docker desktop 安装
      windows11运行docker 下载dockerdesktop https://www.docker.com/ 安装完后会提示要重启电脑 打开dockerdesktop如果报wsl版本软低要更新(docker启动失败) wslkernelversiontoolow打开cmd 运行wsl--update 再次打开dockerdesktop启动成......
  • Windows使用Nexus搭建Maven私服
    简介Maven私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件,有了私服之后,当Maven需要下载构件时,直接请求私服,私服上存在则下载到本地仓库,否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。下载(version-2.x)官网下载页:https://www.......
  • Windows此系统上禁止运行脚本
    这个问题通常是因为PowerShell执行策略限制所导致的。默认情况下,PowerShell执行策略被设置为Restricted,不允许执行任何脚本。为了解决这个问题,可以通过以下步骤修改PowerShell执行策略:以管理员身份打开PowerShell。运行以下命令以查看当前的PowerShell执行策略:Get-E......
  • mongodb副本集模式的单机修改ip(update方式)
    环境:OS:Centos7mongodb:4.4.22 1.停掉当前运行的mongodb/usr/local/services/mongodb/bin/mongolocalhost:29001useadmindb.shutdownServer() 2.网络层面修改ip地址[root@localhostnetwork-scripts]#servicenetworkrestart 3.修改参数修改配置文件,注释掉副本集......
  • Windows系统 如何配置Maven的本地仓库 【详解Maven settings.xml配置(指定本地仓库、
    1.确认安装Maven首先,我们需要确认已在计算机上安装了Maven。你可以从Maven官方网站:https://archive.apache.org/dist/maven/maven-3/下载适合你代码ide版本的Maven安装包,比如我idea2019就下载maven3.5-3.6之间的版本。1、先新建名为MAVEN_HOME的变量,值为你的的maven解压路径......
  • 在最新更新的 Windows 系统中使用 .net 程序调用一些 https 接口时出现错误:请求被中止
    这是因为出于安全原因,新更新的系统中会默认禁用一些已经过时不安全的加密协议如:SSL3.0、TLS1.0、TLS1.1等但并不是所有接口服务器都已经更新支持了更新的协议所以在确认安全的情况下,可以将这些旧的协议再次启用,以达到兼容旧接口调用的目的方法1:注意:这个修改会在系统全局......
  • Windows加域后通过注册表取消壁纸锁定更换壁纸
    打开注册表:开始--运行--regedit(快捷键Win+R)然后找到HKEY_CURRENT_USER==>Software==>Microsoft==>Windows==>CurrentVersion==>Policies,可以输入如下路径到路径栏计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies该目录下有两个子......
  • argo的输入输出--output和input输出目录或文件到下一步骤
    有部分场景需要使用output把目录或者文件传递到下一个步骤。argo提供了两种方式一种是参数方式parameter一种是组件方式artifacts各自适用于不同的场景,参数方式是把某个文本的内容读取出来传递给下一步骤。组件方式可以传递文件本身或者文件目录。参数方式parameter参数方式的用......
  • k8s--kubernetes--argo----使用动态存储PVC---基于nfs 的storageclass
    PVC简介Docker中有volumes的概念,在Docker中,volume是对物理节点服务器node路径目录的一种映射,也就是我们可以把服务器的一个目录挂载给镜像使用。同样的,k8s创建的pod也可以挂载volume,而且不仅仅支持pod所在的服务器node的目录映射,也可以挂载其他网络存储的作为目录挂载。k8s支......
  • 遇到问题--Kubernetes--argo--output does not exist
    情况在使用argo进行流程串联时使用了output进行文件输出。在生产环境的argo中运行,即时需要output的文件在pod中不存在,也能正常运行进入后续步骤。但是内测环境的argo同样的情况下会报错。报错如下:path/mendel/need_update_barcode.txtdoesnotexist(or/mendel/need_update_......