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 바인딩을 이용합니다.