package win32api import ( "syscall" "unsafe" ) /* BOOL CreateEnvironmentBlock( LPVOID *lpEnvironment, HANDLE hToken, BOOL bInherit ); */ func CreateEnvironmentBlock(lpEnvironment *HANDLE, hToken TOKEN, bInherit uintptr) error { if lpEnvironment == nil { return syscall.EINVAL } Dup, err := getProcAddr("userenv.dll", "CreateEnvironmentBlock") if err != nil { return err } r, _, errno := syscall.Syscall6(Dup, 3, uintptr(unsafe.Pointer(lpEnvironment)), uintptr(hToken), bInherit, 0, 0, 0) if r == 0 { if errno != 0 { return error(errno) } return syscall.EINVAL } return nil } func DestroyEnvironmentBlock(lpEnvironment HANDLE) error { proc, err := getProcAddr("userenv.dll", "DestroyEnvironmentBlock") if err != nil { return err } r, _, errno := syscall.Syscall(proc, 1, uintptr(lpEnvironment), 0, 0) if r == 0 { if errno != 0 { return error(errno) } return syscall.EINVAL } return nil }