공유폴더에 접속하기
procedure SharedFolderConnect;
var
sFolderPath : string;
function UseConnection(const aDomain, aUserID, aPassWord: string): Integer;
var
NetResource : TNetResource;
wResult : Integer;
pcRemotePath, pcUserID, pcPassword : pChar;
begin
Result := -1;
GetMem(pcRemotePath, Length(aDomain) + 1);
GetMem(pcUserID, Length(aUserID) + 1);
GetMem(pcPassword, Length(aPassWord) + 1);
StrPCopy(pcRemotePath, aDomain);
StrPCopy(pcUserID, aUserID);
StrPCopy(pcPassword, aPassWord);
try
NetResource.dwScope := RESOURCE_GLOBALNET;
NetResource.dwType := RESOURCETYPE_DISK;
NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;
NetResource.dwUsage := RESOURCEUSAGE_CONNECTABLE;
NetResource.lpLocalName := '';
NetResource.lpRemoteName := pcRemotePath;
NetResource.lpComment := '';
NetResource.lpProvider := '';
Result := WNetAddConnection2(NetResource, pcPassword, pcUserID, CONNECT_INTERACTIVE);
finally
FreeMem(pcRemotePath);
FreeMem(pcUserID);
FreeMem(pcPassword);
end;
end;
begin
sFolderPath := '\\127.0.0.1\Folder'; //접속하려는 폴더의 주소
if not DirectoryExists(sFolderPath) then //권한이 필요 없을 경우엔 폴더를 확인할 수 있습니다.
begin
//권한이 필요할 경우엔 접속하려는 폴더의 사용자계정 정보를 입력합니다.
if (UseConnection(sFolderPath, '사용자계정 ID', '사용자계정 PW') > 0) then
ShowMessage('접속 성공');
else
ShowMessage('접속 실패');
end
else
ShowMessage('접속 성공');
end;
NetResorce 참조 -> https://docs.microsoft.com/ko-kr/windows/win32/api/winnetwk/nf-winnetwk-wnetopenenuma?redirectedfrom=MSDN