0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Win32 NetApi.cs

Posted at

using System;
using System.Runtime.InteropServices;
using System.Text;

using HANDLE = System.IntPtr;
using HWND = System.IntPtr;

namespace Win32
{
public struct NETRESOURCE
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}
public struct USER_INFO_3
{
public int Name;
public int Password;
public int PasswordAge;
public int Privilege;
public int HomeDir;
public int Comment;
public int Flags;
public int ScriptPath;
public int AuthFlags;
public int FullName;
public int UserComment;
public int Parms;
public int Workstations;
public int LastLogon;
public int LastLogoff;
public int AcctExpires;
public int MaxStorage;
public int UnitsPerWeek;
public int LogonHours;
public int BadPwCount;
public int NumLogons;
public int LogonServer;
public int CountryCode;
public int CodePage;
public int UserID;
public int PrimaryGroupID;
public int Profile;
public int HomeDirDrive;
public int PasswordExpired;
}
public struct GROUP_INFO_2
{
public int Name;
public int Comment;
public int GroupID;
public int Attributes;
}
public struct LOCALGROUP_MEMBERS_INFO_0
{
public int pSID;
}
public struct LOCALGROUP_MEMBERS_INFO_1
{
public int pSID;
public g_netSID_NAME_USE eUsage;
public int psName;
}
public struct WKSTA_INFO_102
{
public int wki102_platform_id;
public int wki102_computername;
public int wki102_langroup;
public int wki102_ver_major;
public int wki102_ver_minor;
public int wki102_lanroot;
public int wki102_logged_on_users;
}
public struct WKSTA_USER_INFO_1
{
public int wkui1_username;
public int wkui1_logon_domain;
public int wkui1_oth_domains;
public int wkui1_logon_server;
}
public enum g_netSID_NAME_USE
{
SidTypeUser = 1,
SidTypeGroup = 2,
SidTypeDomain = 3,
SidTypeAlias = 4,
SidTypeWellKnownGroup = 5,
SidTypeDeletedAccount = 6,
SidTypeInvalid = 7,
SidTypeUnknown = 8,
}

public abstract class Mpr
{
	[DllImport("mpr")] public static extern int WNetAddConnection(string lpszNetPath, string lpszPassword, string lpszLocalName);
	[DllImport("mpr")] public static extern int WNetAddConnection2(ref NETRESOURCE lpNetResource, string lpPassword, string lpUserName, int dwFlags);
	[DllImport("mpr")] public static extern int WNetCancelConnection(string lpszName, int bForce);
	[DllImport("mpr")] public static extern int WNetCancelConnection2(string lpName, int dwFlags, int fForce);
	[DllImport("mpr")] public static extern int WNetCloseEnum(HANDLE hEnum);
	[DllImport("mpr")] public static extern int WNetConnectionDialog(HWND hwnd, int dwType);
	[DllImport("mpr")] public static extern int WNetDisconnectDialog(HWND hwnd, int dwType);
	[DllImport("mpr")] public static extern int WNetEnumResource(HANDLE hEnum, ref int lpcCount, ref NETRESOURCE lpBuffer, ref int lpBufferSize);
	[DllImport("mpr")] public static extern int WNetGetConnection(string lpszLocalName, string lpszRemoteName, int cbRemoteName);
	[DllImport("mpr")] public static extern int WNetGetLastError(int lpError, StringBuilder lpErrorBuf, int nErrorBufSize, string lpNameBuf, int nNameBufSize);
	[DllImport("mpr")] public static extern int WNetGetUser(string lpName, StringBuilder lpUserName, ref int lpnLength);
	[DllImport("mpr")] public static extern int WNetOpenEnum(int dwScope, int dwType, int dwUsage, ref NETRESOURCE lpNetResource, ref int lphEnum);
}

public abstract class NetApi
{
	[DllImport("Netapi32")] public static extern int NetApiBufferFree(int lpBuffer);
	[DllImport("Netapi32")] public static extern int NetRemoteTOD(IntPtr yServer, int pBuffer);
	[DllImport("Netapi32")] public static extern int NetUserChangePassword(IntPtr Domain, IntPtr User, Byte OldPass, Byte NewPass);
	[DllImport("Netapi32")] public static extern int NetUserGetGroups(IntPtr lpServer, Byte UserName, int Level, ref int lpBuffer, int PrefMaxLen, ref int lpEntriesRead, ref int lpTotalEntries);
	[DllImport("Netapi32")] public static extern int NetUserGetInfo(IntPtr lpServer, Byte UserName, int Level, ref int lpBuffer);
	[DllImport("Netapi32")] public static extern int NetUserGetLocalGroups(IntPtr lpServer, Byte UserName, int Level, int Flags, ref int lpBuffer, int MaxLen, ref int lpEntriesRead, ref int lpTotalEntries);
	[DllImport("Netapi32")] public static extern int NetWkstaGetInfo(IntPtr lpServer, int Level, IntPtr lpBuffer);
	[DllImport("Netapi32")] public static extern int NetWkstaUserGetInfo(IntPtr reserved, int Level, IntPtr lpBuffer);
	[DllImport("netapi32")] public static extern int NetUserAdd(IntPtr lpServer, int Level, ref USER_INFO_3 lpUser, ref int lpError);
	[DllImport("netapi32")] public static extern int NetLocalGroupDelMembers(int psServer, int psLocalGroup, int lLevel, ref LOCALGROUP_MEMBERS_INFO_0 uMember, int lMemberCount);
	[DllImport("netapi32")] public static extern int NetLocalGroupGetMembers(int psServer, int psLocalGroup, int lLevel, int pBuffer, int lMaxLength, int plEntriesRead, int plTotalEntries, int phResume);

	public const int CNLEN = 15; 
	public const int CONNECT_UPDATE_PROFILE = 0x1;
	public const int FILTER_INTERDOMAIN_TRUST_ACCOUNT = 0x8;
	public const int FILTER_NORMAL_ACCOUNT = 0x2;
	public const int FILTER_PROXY_ACCOUNT = 0x4;
	public const int FILTER_SERVER_TRUST_ACCOUNT = 0x20;
	public const int FILTER_TEMP_DUPLICATE_ACCOUNT = 0x1;
	public const int FILTER_WORKSTATION_TRUST_ACCOUNT = 0x10;
	public const int GNLEN = UNLEN; 
	public const int LG_INCLUDE_INDIRECT = 0x1;
	public const int LM20_PWLEN = 14; 
	public const int MAXCOMMENTSZ = 256; 
	public const int NERR_BASE = 2100;
	public const int NERR_GroupExists = (NERR_BASE + 123);
	public const int NERR_InvalidComputer = (NERR_BASE + 251);
	public const int NERR_NotPrimary = (NERR_BASE + 126);
	public const int NERR_PasswordTooShort = (NERR_BASE + 145);
	public const int NERR_Success = 0;
	public const int NERR_UserExists = (NERR_BASE + 124);
	public const int PWLEN = 256; 
	public const int RESOURCEDISPLAYTYPE_DOMAIN = 0x1;
	public const int RESOURCEDISPLAYTYPE_FILE = 0x4;
	public const int RESOURCEDISPLAYTYPE_GENERIC = 0x0;
	public const int RESOURCEDISPLAYTYPE_GROUP = 0x5;
	public const int RESOURCEDISPLAYTYPE_SERVER = 0x2;
	public const int RESOURCEDISPLAYTYPE_SHARE = 0x3;
	public const int RESOURCETYPE_ANY = 0x0;
	public const int RESOURCETYPE_DISK = 0x1;
	public const int RESOURCETYPE_PRINT = 0x2;
	public const int RESOURCETYPE_UNKNOWN = 0xFFFF;
	public const int RESOURCEUSAGE_ALL = 0x0;
	public const int RESOURCEUSAGE_CONNECTABLE = 0x1;
	public const int RESOURCEUSAGE_CONTAINER = 0x2;
	public const int RESOURCEUSAGE_RESERVED = unchecked((int)0x80000000);
	public const int RESOURCE_CONNECTED = 0x1;
	public const int RESOURCE_ENUM_ALL = 0xFFFF;
	public const int RESOURCE_GLOBALNET = 0x2;
	public const int RESOURCE_PUBLICNET = 0x2;
	public const int RESOURCE_REMEMBERED = 0x3;
	public const int TIMEQ_FOREVER = -1; 
	public const int UF_ACCOUNTDISABLE = 0x2;
	public const int UF_HOMEDIR_REQUIRED = 0x8;
	public const int UF_LOCKOUT = 0x10;
	public const int UF_PASSWD_CANT_CHANGE = 0x40;
	public const int UF_PASSWD_NOTREQD = 0x20;
	public const int UF_SCRIPT = 0x1;
	public const int UNITS_PER_DAY = 24;
	public const int UNITS_PER_WEEK = UNITS_PER_DAY * 7;
	public const int UNLEN = 256; 
	public const int USER_MAXSTORAGE_UNLIMITED = -1; 
	public const int USER_NO_LOGOFF = -1; 
	public const int USER_PRIV_ADMIN = 2;
	public const int USER_PRIV_GUEST = 0;
	public const int USER_PRIV_MASK = 3;
	public const int USER_PRIV_USER = 1;
	public const int WN_ACCESS_DENIED = ERROR.ERROR_ACCESS_DENIED;
	public const int WN_ALREADY_CONNECTED = ERROR.ERROR_ALREADY_ASSIGNED;
	public const int WN_BAD_LOCALNAME = ERROR.ERROR_BAD_DEVICE;
	public const int WN_BAD_NETNAME = ERROR.ERROR_BAD_NET_NAME;
	public const int WN_BAD_PASSWORD = ERROR.ERROR_INVALID_PASSWORD;
	public const int WN_BAD_POINTER = ERROR.ERROR_INVALID_ADDRESS;
	public const int WN_BAD_PROFILE = ERROR.ERROR_BAD_PROFILE;
	public const int WN_BAD_PROVIDER = ERROR.ERROR_BAD_PROVIDER;
	public const int WN_BAD_USER = ERROR.ERROR_BAD_USERNAME;
	public const int WN_BAD_VALUE = ERROR.ERROR_INVALID_PARAMETER;
	public const int WN_CANNOT_OPEN_PROFILE = ERROR.ERROR_CANNOT_OPEN_PROFILE;
	public const int WN_CONNECTION_CLOSED = ERROR.ERROR_CONNECTION_UNAVAIL;
	public const int WN_DEVICE_ERROR = ERROR.ERROR_GEN_FAILURE;
	public const int WN_DEVICE_IN_USE = ERROR.ERROR_DEVICE_IN_USE;
	public const int WN_EXTENDED_ERROR = ERROR.ERROR_EXTENDED_ERROR;
	public const int WN_FUNCTION_BUSY = ERROR.ERROR_BUSY;
	public const int WN_MORE_DATA = ERROR.ERROR_MORE_DATA;
	public const int WN_NET_ERROR = ERROR.ERROR_UNEXP_NET_ERR;
	public const int WN_NOT_CONNECTED = ERROR.ERROR_NOT_CONNECTED;
	public const int WN_NOT_SUPPORTED = ERROR.ERROR_NOT_SUPPORTED;
	public const int WN_NO_NETWORK = ERROR.ERROR_NO_NETWORK;
	public const int WN_NO_NET_OR_BAD_PATH = ERROR.ERROR_NO_NET_OR_BAD_PATH;
	public const int WN_OPEN_FILES = ERROR.ERROR_OPEN_FILES;
	public const int WN_OUT_OF_MEMORY = ERROR.ERROR_NOT_ENOUGH_MEMORY;
	public const int WN_SUCCESS = ERROR.NO_ERROR;
	public const int WN_WINDOWS_ERROR = ERROR.ERROR_UNEXP_NET_ERR;
}

}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?