diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2021-04-13 02:09:44 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2021-04-13 02:09:44 +0200 |
| commit | a1d871360cdfd0e2683bf17df5eaca094254282e (patch) | |
| tree | cb401c055d04ab4d0408ce72182fb5867f8bbb1d /core/sys/windows/netapi32.odin | |
| parent | 2b36069924c9fa21111fe8a8b5471e25847c52cf (diff) | |
Add support to core:windows to add/delete users.
main :: proc() {
using fmt;
using windows;
username := "testuser";
password := "testpass";
ok := add_user("", username, password);
fmt.printf("add_user: %v\n", ok);
pi := windows.PROCESS_INFORMATION{};
ok2, path := windows.add_user_profile(username);
fmt.printf("add_user_profile: %v, %v\n", ok2, path);
ok3 := windows.delete_user_profile(username);
fmt.printf("delete_user_profile: %v\n", ok3);
ok4 := windows.delete_user("", username);
fmt.printf("delete_user: %v\n", ok4);
// Has optional bool to not wait on the process before returning.
b := run_as_user(username, password, "C:\\Repro\\repro.exe", "Hellope!", &pi);
fmt.printf("run_as_user: %v %v\n", b, pi);
}
Diffstat (limited to 'core/sys/windows/netapi32.odin')
| -rw-r--r-- | core/sys/windows/netapi32.odin | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/core/sys/windows/netapi32.odin b/core/sys/windows/netapi32.odin new file mode 100644 index 000000000..d9b41657e --- /dev/null +++ b/core/sys/windows/netapi32.odin @@ -0,0 +1,37 @@ +package sys_windows + +foreign import netapi32 "system:Netapi32.lib" + +@(default_calling_convention="stdcall") +foreign netapi32 { + NetUserAdd :: proc( + servername: wstring, + level: DWORD, + user_info: ^USER_INFO_1, // Perhaps make this a #raw_union with USER_INFO1..4 when we need the other levels. + parm_err: ^DWORD, + ) -> NET_API_STATUS ---; + NetUserDel :: proc( + servername: wstring, + username: wstring, + ) -> NET_API_STATUS ---; + NetUserGetInfo :: proc( + servername: wstring, + username: wstring, + level: DWORD, + user_info: ^USER_INFO_1, + ) -> NET_API_STATUS ---; + NetLocalGroupAddMembers :: proc( + servername: wstring, + groupname: wstring, + level: DWORD, + group_members_info: ^LOCALGROUP_MEMBERS_INFO_0, // Actually a variably sized array of these. + totalentries: DWORD, + ) -> NET_API_STATUS ---; + NetLocalGroupDelMembers :: proc( + servername: wstring, + groupname: wstring, + level: DWORD, + group_members_info: ^LOCALGROUP_MEMBERS_INFO_0, // Actually a variably sized array of these. + totalentries: DWORD, + ) -> NET_API_STATUS ---; +}
\ No newline at end of file |