zoukankan      html  css  js  c++  java
  • C# 共享文件读取(转)

    using System;
    using System.Runtime.InteropServices;
    using BOOL = System.Boolean;
    using DWORD = System.UInt32;
    using LPWSTR = System.String;
    using NET_API_STATUS = System.UInt32;

    namespace ConnectUNCWithCredentials
    {
    public class UNCAccessWithCredentials : IDisposable
    {
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    internal struct USE_INFO_2
    {
    internal LPWSTR ui2_local;
    internal LPWSTR ui2_remote;
    internal LPWSTR ui2_password;
    internal DWORD ui2_status;
    internal DWORD ui2_asg_type;
    internal DWORD ui2_refcount;
    internal DWORD ui2_usecount;
    internal LPWSTR ui2_username;
    internal LPWSTR ui2_domainname;
    }

    [DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    internal static extern NET_API_STATUS NetUseAdd(
    LPWSTR UncServerName,
    DWORD Level,
    ref USE_INFO_2 Buf,
    out DWORD ParmError);

    [DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    internal static extern NET_API_STATUS NetUseDel(
    LPWSTR UncServerName,
    LPWSTR UseName,
    DWORD ForceCond);

    private bool disposed = false;

    private string sUNCPath;
    private string sUser;
    private string sPassword;
    private string sDomain;
    private int iLastError;

    /// <summary>
    /// A disposeable class that allows access to a UNC resource with credentials.
    /// </summary>
    public UNCAccessWithCredentials()
    {
    }

    /// <summary>
    /// The last system error code returned from NetUseAdd or NetUseDel. Success = 0
    /// </summary>
    public int LastError
    {
    get { return iLastError; }
    }

    public void Dispose()
    {
    if (!this.disposed)
    {
    NetUseDelete();
    }
    disposed = true;
    GC.SuppressFinalize(this);
    }

    /// <summary>
    /// Connects to a UNC path using the credentials supplied.
    /// </summary>
    /// <param name="UNCPath">Fully qualified domain name UNC path</param>
    /// <param name="User">A user with sufficient rights to access the path.</param>
    /// <param name="Domain">Domain of User.</param>
    /// <param name="Password">Password of User</param>
    /// <returns>True if mapping succeeds. Use LastError to get the system error code.</returns>
    public bool NetUseWithCredentials(string UNCPath, string User, string Domain, string Password)
    {
    sUNCPath = UNCPath;
    sUser = User;
    sPassword = Password;
    sDomain = Domain;
    return NetUseWithCredentials();
    }

    private bool NetUseWithCredentials()
    {
    uint returncode;
    try
    {
    USE_INFO_2 useinfo = new USE_INFO_2();

    useinfo.ui2_remote = sUNCPath;
    useinfo.ui2_username = sUser;
    useinfo.ui2_domainname = sDomain;
    useinfo.ui2_password = sPassword;
    useinfo.ui2_asg_type = 0;
    useinfo.ui2_usecount = 1;
    uint paramErrorIndex;
    returncode = NetUseAdd(null, 2, ref useinfo, out paramErrorIndex);
    iLastError = (int)returncode;
    return returncode == 0;
    }
    catch
    {
    iLastError = Marshal.GetLastWin32Error();
    return false;
    }
    }

    /// <summary>
    /// Ends the connection to the remote resource
    /// </summary>
    /// <returns>True if it succeeds. Use LastError to get the system error code</returns>
    public bool NetUseDelete()
    {
    uint returncode;
    try
    {
    returncode = NetUseDel(null, sUNCPath, 2);
    iLastError = (int)returncode;
    return (returncode == 0);
    }
    catch
    {
    iLastError = Marshal.GetLastWin32Error();
    return false;
    }
    }

    ~UNCAccessWithCredentials()
    {
    Dispose();
    }

    }
    }

  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/prettyisshit/p/4922322.html
Copyright © 2011-2022 走看看