12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // +build windows
- package sys_windows
- foreign import advapi32 "system:Advapi32.lib"
- @(default_calling_convention="stdcall")
- foreign advapi32 {
- @(link_name = "SystemFunction036")
- RtlGenRandom :: proc(RandomBuffer: ^u8, RandomBufferLength: ULONG) -> BOOLEAN ---
- OpenProcessToken :: proc(ProcessHandle: HANDLE,
- DesiredAccess: DWORD,
- TokenHandle: ^HANDLE) -> BOOL ---
- }
- // Necessary to create a token to impersonate a user with for CreateProcessAsUser
- @(default_calling_convention="stdcall")
- foreign advapi32 {
- LogonUserW :: proc(
- lpszUsername: LPCWSTR,
- lpszDomain: LPCWSTR,
- lpszPassword: LPCWSTR,
- dwLogonType: Logon32_Type,
- dwLogonProvider: Logon32_Provider,
- phToken: ^HANDLE,
- ) -> BOOL ---
- // https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-lookupaccountnamew
- // To look up the SID to use with DeleteProfileW.
- LookupAccountNameW :: proc(
- lpSystemName: wstring,
- lpAccountName: wstring,
- Sid: ^SID,
- cbSid: ^DWORD,
- ReferencedDomainName: wstring,
- cchReferencedDomainName: ^DWORD,
- peUse: ^SID_TYPE,
- ) -> BOOL ---
- CreateProcessWithLogonW :: proc(
- lpUsername: wstring,
- lpDomain: wstring,
- lpPassword: wstring,
- dwLogonFlags: DWORD,
- lpApplicationName: wstring,
- lpCommandLine: wstring,
- dwCreationFlags: DWORD,
- lpEnvironment: LPVOID,
- lpCurrentDirectory: wstring,
- lpStartupInfo: LPSTARTUPINFO,
- lpProcessInformation: LPPROCESS_INFORMATION,
- ) -> BOOL ---
- // https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessasuserw
- CreateProcessAsUserW :: proc(
- hToken: HANDLE,
- lpApplicationName: wstring,
- lpCommandLine: wstring,
- lpProcessAttributes: LPSECURITY_ATTRIBUTES,
- lpThreadAttributes: LPSECURITY_ATTRIBUTES,
- bInheritHandles: BOOL,
- dwCreationFlags: DWORD,
- lpEnvironment: LPVOID,
- lpCurrentDirectory: wstring,
- lpStartupInfo: LPSTARTUPINFO,
- lpProcessInformation: LPPROCESS_INFORMATION,
- ) -> BOOL ---
- }
|