C# 공유폴더 로그인 하고 접근 하는 법(WNetUseConnection)
C#/Tip :
2011. 1. 10. 16:48
공유폴더에 접근해 로그인하고 파일을 복사하는 방법을 남깁니다.
WNetUseConnection를 이용해 해당 공유폴더에 접속해서 로그인 하면 됩니다.
그런데 그냥 로그인하고 파일 복사나 수정 / 삭제를 한뒤에 다시 연결을 끊어줘야 하는데
그것이
마지막에 있는 WNetCancelConnection2A 입니다.
되도록 작업이 끝난 후에는 닫아주는게 좋을거 같습니다.
그리고 아래 코드를 이용해 연결 되었다면 File이나 FileInfo를 이용하면 됩니다.
class SharedAPI { // 구조체 선언 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct NETRESOURCE { public uint dwScope; public uint dwType; public uint dwDisplayType; public uint dwUsage; public string lpLocalName; public string lpRemoteName; public string lpComment; public string lpProvider; } // API 함수 선언 [DllImport("mpr.dll", CharSet = CharSet.Auto)] public static extern int WNetUseConnection( IntPtr hwndOwner, [MarshalAs(UnmanagedType.Struct)] ref NETRESOURCE lpNetResource, string lpPassword, string lpUserID, uint dwFlags, StringBuilder lpAccessName, ref int lpBufferSize, out uint lpResult); // API 함수 선언 (공유해제) [DllImport("mpr.dll", EntryPoint = "WNetCancelConnection2", CharSet = CharSet.Auto)] public static extern int WNetCancelConnection2A(string lpName, int dwFlags, int fForce); // 공유연결 public int ConnectRemoteServer(string server) { int capacity = 64; uint resultFlags = 0; uint flags = 0; System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity); NETRESOURCE ns = new NETRESOURCE(); ns.dwType = 1; // 공유 디스크 ns.lpLocalName = null; // 로컬 드라이브 지정하지 않음 ns.lpRemoteName = server; ns.lpProvider = null; int result = 0; if (server == @"\\10.144.70.120\d$") { result = WNetUseConnection(IntPtr.Zero, ref ns, "djfrmfpdl", "administrator", flags, sb, ref capacity, out resultFlags); } else { result = WNetUseConnection(IntPtr.Zero, ref ns, "PASSWORD, "LOGINID", flags, sb, ref capacity, out resultFlags); } return result; } // 공유해제 public void CencelRemoteServer(string server) { WNetCancelConnection2A(server, 1, 0); } }
'C# > Tip' 카테고리의 다른 글
C# 윈폼 단축키 설정하기 (0) | 2011.03.15 |
---|---|
Microsoft .NET Framework 3.5 SP1 & Microsoft .NET Framework 4.0 (25) | 2011.01.24 |
C# TextBox 대 소문자 변경 하기 (0) | 2010.11.03 |
C# 네트워크(Network) TCP 클라이언트 만들어보기 (0) | 2010.08.14 |
C# 네트워크(Network) TCP 서버 만들어보기 (0) | 2010.08.14 |