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 |


