mirror of
https://github.com/snltty/linker.git
synced 2025-10-16 14:11:18 +08:00
105 lines
3.6 KiB
C#
105 lines
3.6 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
|
|
namespace Linker.Libs.Winapis
|
|
{
|
|
public static class NetApi32
|
|
{
|
|
[DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
public static extern uint NetUserChangePassword(
|
|
[MarshalAs(UnmanagedType.LPWStr)] string domainname,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string username,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string oldpassword,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string newpassword
|
|
);
|
|
|
|
public static bool ChangePassword(
|
|
[MarshalAs(UnmanagedType.LPWStr)] string domainname,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string username,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string oldpassword,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string newpassword
|
|
)
|
|
{
|
|
return NetUserChangePassword(domainname, username, oldpassword, newpassword) == 0;
|
|
}
|
|
|
|
[DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
public static extern int NetUserEnum(
|
|
StringBuilder servername,
|
|
int level,
|
|
int filter,
|
|
out IntPtr bufptr,
|
|
int prefmaxlen,
|
|
out int entriesread,
|
|
out int totalentries,
|
|
ref int resume_handle
|
|
);
|
|
|
|
[DllImport("Netapi32.dll", CharSet = CharSet.Unicode)]
|
|
public static extern int NetUserGetInfo(
|
|
string servername,
|
|
string username,
|
|
int level,
|
|
out IntPtr bufptr
|
|
);
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct USER_INFO_3
|
|
{
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string Name;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string Password;
|
|
public int PasswordAge;
|
|
public int Privilege;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string HomeDirectory;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string Comment;
|
|
public int Flags;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string ScriptPath;
|
|
public int AuthFlags;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string FullName;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string UserComment;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string Parameters;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string Workstations;
|
|
public int LastLogon;
|
|
public int LastLogoff;
|
|
public int AcctExpires;
|
|
public int MaxStorage;
|
|
public int UnitsPerWeek;
|
|
public IntPtr LogonHours;
|
|
public int BadPwdCount;
|
|
public int NumLogons;
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
public string LogonServer;
|
|
public int CountryCode;
|
|
public int CodePage;
|
|
}
|
|
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct USER_INFO_0
|
|
{
|
|
public string usri0_name;
|
|
}
|
|
|
|
public const int NERR_Success = 0;
|
|
public const int ERROR_ACCESS_DENIED = 5;
|
|
public const int ERROR_INVALID_PARAMETER = 87;
|
|
public const int ERROR_NOT_ENOUGH_MEMORY = 8;
|
|
public const int ERROR_NO_SUCH_USER = 1317;
|
|
public const int ERROR_INVALID_LEVEL = 124;
|
|
public const int ERROR_MORE_DATA = 234;
|
|
|
|
[DllImport("Netapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
public static extern int NetApiBufferFree(IntPtr Buffer);
|
|
}
|
|
}
|