C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[194] 네트워크 드라이브 연결하기
박지훈.임프 [cbuilder] 13280 읽음    2001-09-28 04:08
임프랍니다.

이번 팁은, 네트워크 드라이브를 연결하는 방법입니다.

네트워크 드라이브를 만들기 위해서는 Win32 API 함수인 WNetAddConnection2() 함수를 이용합니다.
(WNetAddConnection() 함수를 쓸 수도 있지만 몇가지 제약이 있습니다.)
이 함수의 인자는 첫번째가 NETRESOURCE 타입의 구조체의 포인터, 두번째와 세번째는 계정 패스워드와 유저
네임, 네번째는 옵션입니다. (이 옵션을 CONNECT_UPDATE_PROFILE으로 설정하면 OS가 네트워크 드라이브를
기억해서 로그온할 때마다 다시 나타납니다.)

NETRESOURCE 구조체의 멤버중 lpLocalName은 드라이브 문자를 가지는 문자열이고, lpRemoteName은 연결할
공유 디렉토리의 UNC 네임입니다. UNC 네임이란, 컴퓨터 이름을 포함한 네트워크상의 전체 경로를 말합니다.
예를 들어, 컴퓨터 이름이 MyCom이고 공유 디렉토리 이름이 SharedDirectory라면, UNC 네임은 다음과 같습니다.
\\MyCom\SharedDirectory

사용하는 방법은 다음과 같습니다. 다음의 소스는 공유하려는 디렉토리가 현재 컴퓨터에 있을 때입니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    NETRESOURCE NetRes;
    NetRes.dwType = RESOURCETYPE_DISK;
    NetRes.lpLocalName  = "Z:";
    NetRes.lpRemoteName = "\\\\컴퓨터이름\\공유디렉토리";
    NetRes.lpProvider   = NULL;
    DWORD Result = WNetAddConnection2(&NetRes, "", "", CONNECT_UPDATE_PROFILE);
    if(Result==NO_ERROR)
        ShowMessage("네트웍 드라이브가 생성되었습니다.");
}


원래, UNC 이름의 경우, 컴퓨터이름으로 . (점)을 주면 현재 컴퓨터를 가리키게 되어있는데..
이 API에서는 안먹히더군요. GetComputerName() 함수를 쓰면 현재 컴퓨터 이름을 알아낼 수 있습니다.

만약 원격 컴퓨터라면, WNetAddConnection2() 함수의 두번째와 세번째 인자로 해당 원격 컴퓨터의 계정
패스워드와 유저네임을 넘겨야 합니다.

만약 연결하려는 원격 컴퓨터가 현재 도메인내에 있는 것이 아니라 인터넷상의 컴퓨터라면, UNC네임에
IP 주소를 써서 연결할 수 있습니다. IP주소를 쓸 때는 컴퓨터 이름 자리에 그대로 IP주소를 써넣으면
됩니다. 예를 들어서, IP가 210.145.45.233이라면,
NetRes.lpRemoteName = "\\\\210.145.45.233\\공유디렉토리";
이렇게 하면 됩니다.

실제로, 인터넷에서 드라이브 형태로 서비스를 하는 업체들은 대부분 이 WNetAddConnection2() 함수를
이용한답니다.

반대로 연결을 해제할 때는 WNetCancelConnection2() 함수를 쓰면 됩니다.
(WNetAddConnection2() 함수가 있다는 것은 볼랜드 저팬 사이트에서 알았습니다.)

그럼 이만...

+ -

관련 글 리스트
194 네트워크 드라이브 연결하기 박지훈.임프 13280 2001/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.