aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/elevate/shellexecute.go
diff options
context:
space:
mode:
Diffstat (limited to 'elevate/shellexecute.go')
-rw-r--r--elevate/shellexecute.go26
1 files changed, 13 insertions, 13 deletions
diff --git a/elevate/shellexecute.go b/elevate/shellexecute.go
index 6290b4f8..e0be9d98 100644
--- a/elevate/shellexecute.go
+++ b/elevate/shellexecute.go
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: MIT
*
- * Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
+ * Copyright (C) 2019-2022 WireGuard LLC. All Rights Reserved.
*/
package elevate
@@ -24,7 +24,7 @@ const (
cSEE_MASK_DEFAULT = 0
)
-func ShellExecute(program string, arguments string, directory string, show int32) (err error) {
+func ShellExecute(program, arguments, directory string, show int32) (err error) {
var (
program16 *uint16
arguments16 *uint16
@@ -107,36 +107,36 @@ func ShellExecute(program string, arguments string, directory string, show int32
}
originalPath := dataTableEntry.FullDllName.Buffer
explorerPath := windows.StringToUTF16Ptr(filepath.Join(windowsDirectory, "explorer.exe"))
- rtlInitUnicodeString(&dataTableEntry.FullDllName, explorerPath)
+ windows.RtlInitUnicodeString(&dataTableEntry.FullDllName, explorerPath)
defer func() {
- rtlInitUnicodeString(&dataTableEntry.FullDllName, originalPath)
+ windows.RtlInitUnicodeString(&dataTableEntry.FullDllName, originalPath)
runtime.KeepAlive(explorerPath)
}()
- if err = coInitializeEx(0, cCOINIT_APARTMENTTHREADED); err == nil {
- defer coUninitialize()
+ if err = windows.CoInitializeEx(0, windows.COINIT_APARTMENTTHREADED); err == nil {
+ defer windows.CoUninitialize()
}
var interfacePointer **[0xffff]uintptr
- if err = coGetObject(
+ if err = windows.CoGetObject(
windows.StringToUTF16Ptr("Elevation:Administrator!new:{3E5FC7F9-9A51-4367-9063-A120244FBEC7}"),
- &cBIND_OPTS3{
- cbStruct: uint32(unsafe.Sizeof(cBIND_OPTS3{})),
- dwClassContext: cCLSCTX_LOCAL_SERVER,
+ &windows.BIND_OPTS3{
+ CbStruct: uint32(unsafe.Sizeof(windows.BIND_OPTS3{})),
+ ClassContext: windows.CLSCTX_LOCAL_SERVER,
},
&windows.GUID{0x6EDD6D74, 0xC007, 0x4E75, [8]byte{0xB7, 0x6A, 0xE5, 0x74, 0x09, 0x95, 0xE2, 0x4C}},
- &interfacePointer,
+ (**uintptr)(unsafe.Pointer(&interfacePointer)),
); err != nil {
return
}
- defer syscall.Syscall((*interfacePointer)[releaseOffset], 1, uintptr(unsafe.Pointer(interfacePointer)), 0, 0)
+ defer syscall.SyscallN((*interfacePointer)[releaseOffset], uintptr(unsafe.Pointer(interfacePointer)))
if program16 == nil {
return
}
- if ret, _, _ := syscall.Syscall6((*interfacePointer)[shellExecuteOffset], 6,
+ if ret, _, _ := syscall.SyscallN((*interfacePointer)[shellExecuteOffset],
uintptr(unsafe.Pointer(interfacePointer)),
uintptr(unsafe.Pointer(program16)),
uintptr(unsafe.Pointer(arguments16)),