40 lines
914 B
Go
40 lines
914 B
Go
package main
|
|
|
|
import (
|
|
"os/exec"
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
func replaceFile(a, b string) error {
|
|
x, e := syscall.UTF16PtrFromString(a)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
y, e := syscall.UTF16PtrFromString(b)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
r, _, e := syscall.NewLazyDLL("kernel32.dll").NewProc("MoveFileExW").Call(uintptr(unsafe.Pointer(x)), uintptr(unsafe.Pointer(y)), 3)
|
|
if r == 0 {
|
|
return e
|
|
}
|
|
return nil
|
|
}
|
|
func background(c *exec.Cmd) {
|
|
c.SysProcAttr = &syscall.SysProcAttr{CreationFlags: 0x00000008 | 0x00000200}
|
|
}
|
|
func admin() bool {
|
|
r, _, _ := syscall.NewLazyDLL("shell32.dll").NewProc("IsUserAnAdmin").Call()
|
|
return r != 0
|
|
}
|
|
|
|
func enableTerminal() {
|
|
k := syscall.NewLazyDLL("kernel32.dll")
|
|
var mode uint32
|
|
handle := uintptr(syscall.Stdout)
|
|
r, _, _ := k.NewProc("GetConsoleMode").Call(handle, uintptr(unsafe.Pointer(&mode)))
|
|
if r != 0 {
|
|
k.NewProc("SetConsoleMode").Call(handle, uintptr(mode|4))
|
|
}
|
|
}
|