본문으로 건너뛰기

윈도API, ShellExcute를 이용한 관리자권한으로 명령어 실행

Go
import (
	"golang.org/x/sys/windows"
	"path/filepath"    
)


/
*	runAsCommand
/
func runAsCommand(exe string, runArg string, showCmd int32) error {
	verb := "runas"
	cwd := filepath.Dir(exe)

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

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

	return nil
}

윈도에서 프로그래밍을 하다보면 .. 특정 위치의 레지스트리에 정보를 기록하거나 시스템영역의 파일을 읽거나 하기 위해서 관리자권한으로 프로그램을 실행해야하는 경우에 사용가능한 함수입니다.

golang.org/x/sys/windows 패키지의 ShellExcute 바인딩을 이용합니다.