캔들플라워

[Delphi] 암호걸린 네트워크 공유 폴더에 접근하기.


가끔씩... 네트워크 드라이브 연결을 하지 않고 단지 UNC경로 만으로 공유된 폴더에
접근해야 할 경우가 있습니다. 예를 들어 다음과 같이 말이죠...


  FileStream :=
    TFileStream.Create(
      '\192.168.0.105sharetest.txt',
      fmCreate
    );

이 때 대상 컴퓨터에 암호가 걸려있다면 골치가 아프죠.
뭐 시작 -> 실행을 누르고 UNC를 입력한 다음 암호 저장을 해 두면 됩니다만...
공유암호를 키 체인에 저장해두는 건 그다지 바람직한 방법이 아닙니다.

다음 프로시저는 이 경우에 써먹을 수 있습니다.
간단한 코드니 설명은 생략하고, 참조 파라미터로 넘겨주는 ConnStr 에 연결을 위한
문자열을 반환하도록 해 두었으니 잘 사용하세요.


// 도메인에 연결을 만든다.
function UseConnection(const aDomain, aUserID, aPassWord: String; var ConnStr: String): Boolean;
var
  NetResource: TNetResource;
  ConnStrLen: DWORD;
  RetFlag: DWORD;
  RetValue: DWORD;
begin
  FillChar(NetResource, SizeOf(TNetResource), 0);

  with NetResource do
  begin
    dwType := RESOURCETYPE_ANY;
    lpLocalName := nil;   // 로컬 드라이브 지정하지 않음
    lpRemoteName := PChar('\' + aDomain);
    lpProvider := nil;
  end;

  SetLength(ConnStr, MAX_PATH);
  ConnStrLen := MAX_PATH;
  RetValue:=
    WNetUseConnection(
      0, NetResource,
      PChar(aPassWord), PChar(aUserID), CONNECT_INTERACTIVE,
      PChar(ConnStr), ConnStrLen, RetFlag
    );
  SetLength(ConnStr, StrLen(PChar(ConnStr)));

  ConnStr := '\'+aDomain;

  Result := RetValue = 0;
end;

2009/02/17 10:14 2009/02/17 10:14
top

TRACKBACK ADDRESS :: 이 글에는 트랙백을 보낼 수 없습니다

Leave a comment..