2017年6月19日 星期一

【Windows API】C# UNC 網路磁碟機 或 網路資料夾 mount 路磁碟機代號

Windows API
UNC 網路磁碟機 或 網路資料夾

今天的教學不使用 net command 指令

教程課程:
Netapi32.dll

其中三種 函式

1.NetUserAdd([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, ref USER_INFO_? buf, int parm_err)
說明:新增一個連線資訊
參數說明:
servername:DNS or NetBIOS name名稱,如果沒有用可以設 null

level:參數有4種 (1.2.3.4 分別USER_INFO_1 - USER_INFO_2 )就是指資料型態是哪種

buf:回傳 USER_INFO_?

parm_err:用於 NetUserSetInfo ,如果沒用可以設 null

2.NetUserDel([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username);
說明:刪除現有連線資訊

3.NetUserGetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username,int level,out IntPtr bufptr);
說明:查詢現有連結資訊,等同反相得到資料
servername:可以null
username:權限帳號
level:同 NetUserAdd
out bufptr:IntPtr 指標  會收到(結果)   -->Marshal.PtrToStructure(bufPtr, typeof(USER_INFO_?))
Marshal:Marshal.PtrToStructure從 Unmanaged 記憶體區塊封送處理資料到新配置的指定類型的 Managed 物件。

USER_INFO_2 (level 資料型態:2)其它1.3.4 都大同小異
MSDN 網址:https://msdn.microsoft.com/zh-tw/library/windows/desktop/aa371337(v=vs.85).aspx

參數:
LPWSTR usri2_name;
LPWSTR usri2_password; --->密碼
DWORD usri2_password_age;
DWORD usri2_priv;
LPWSTR usri2_home_dir;
LPWSTR usri2_comment;
DWORD usri2_flags;
LPWSTR usri2_script_path;
DWORD usri2_auth_flags;
LPWSTR usri2_full_name;
LPWSTR usri2_usr_comment;
LPWSTR usri2_parms;
LPWSTR usri2_workstations;
DWORD usri2_last_logon;
DWORD usri2_last_logoff;
DWORD usri2_acct_expires;
DWORD usri2_max_storage;
DWORD usri2_units_per_week;
PBYTE usri2_logon_hours;
DWORD usri2_bad_pw_count;
DWORD usri2_num_logons;
LPWSTR usri2_logon_server;
DWORD usri2_country_code;
DWORD usri2_code_page;


Msdn C++ 說明及範例:
網址:https://msdn.microsoft.com/zh-tw/library/windows/desktop/aa370654(v=vs.85).aspx

其它網站說明:
NetUserAdd
網址:http://www.pinvoke.net/default.aspx/netapi32/NetUserAdd.html
網址:http://www.securitypronews.com/using-the-network-functions-in-c-part-i-user-functions-2003-06
其它中文網址:http://www.cnblogs.com/tonyqus/archive/2004/12/26/82120.aspx
其它範例 網址:http://www.securitypronews.com/using-the-network-functions-in-c-part-i-user-functions-2003-06

NetUserGetInfo
其它範例 網址:http://www.pinvoke.net/default.aspx/netapi32/NetUserGetInfo.html

Marshal
MSDN網址:https://msdn.microsoft.com/zh-tw/library/system.runtime.interopservices.marshal(v=vs.110).aspx

Marshal.PtrToStructure
MSDN 網址:https://msdn.microsoft.com/zh-tw/library/4ca6d5z7(v=vs.110).aspx