Q&A

  • NTFS 를 델파이로 권한을 줄수 있나요...?
델마당에 자료가 있었는데.. 그래도 하니까.... 잘 되지 않는것 같습니다.

NTFS에는 FAT32와 달리 폴더에 등록정보에 보안이라는 탭이 하나 더 있지요. 폴더를 사용할수 있는 계정을 설정하는 겁니다..

그걸 델파이로 구현 할수 있는 물어보고 싶군요..

제가 어디서 소스를 구한것 같은데.. 잘 이해가 가지 않아서 같이 올립니다.

소스 중간에
      BuildExplicitAccessWithName(@EA[0], PChar(TrusteeName), AccessPermissions, AccessMode, Inheritance);

위와 같은 문장이 나오는데..  inheritance 에서 걸려요.. 왜 걸리는 알수가 없군요.. 그래서 숫자 0을 넣어서 하려고 햇는 함수에 파라미터를 어떻게 대입해야 할지 잘 모르겠습니다...
아시는 분 좀 알려주세요..

참고로 밑에 함수를 돌리려면 델파이 예제 소스 중에   AclAP.pas 를 포함하는 소스가 있습니다.. AclAP를 uses절에 추가해 주셔야 합니다.



function SetNTFSPermissionsOnFolder(FolderName, TrusteeName: string; AccessPermissions: Cardinal; AccessMode: ACCESS_MODE): integer;
var
   pOldDACL, pNewDACL: PACL;
   pSD: Pointer;
   EA: array[0..1] of EXPLICIT_ACCESS_A;
   rCode: integer;
   cCountOfExplicitEntries: Cardinal;
begin
// get a pointer to the existing DACL
   rCode := GetNamedSecurityInfo(PChar(FolderName), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, @pOldDACL, nil, pSD);
   if rCode <> 0 then
   begin
      result := rCode;
   end else
   begin
     // initialize an EXPLICIT_ACCESS structure to allow access
      BuildExplicitAccessWithName(@EA[0], PChar(TrusteeName), AccessPermissions, AccessMode, Inheritance);
        // create a new ACL by merging the EXPLICIT_ACCESS structure with the existing DACL
      cCountOfExplicitEntries := 1;
      rCode := SetEntriesInAcl(cCountOfExplicitEntries, @EA[0], pOldDACL, pNewDACL);
      if (rCode <> 0) then
      begin
         result := rCode;
      end else
      begin
        // attach the new ACL as the object's DACL
         rCode := SetNamedSecurityInfo(PChar(FolderName), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pNewDACL, nil);
         result := rCode;
      end;
   end;

   if (pSD <> nil) then LocalFree(Cardinal(pSD));
   if (pNewDACL <> nil) then LocalFree(Cardinal(pNewDACL));
end;


2  COMMENTS
  • Profile
    타락천사 2003.06.09 02:48
    안녕하세요. 타락임다..

    아마 되겠죠..

    지원하는 API 함수가 있다면 델파이에서 못쓸 이유가 없습니다.

    그런데, 어째서 그런 기능이 필요한지 모르겠군요..

    다른 사람의 컴퓨터에 몰래 들어가서, 특정 폴더의 사용권한을 독차지 할 수도 있습니다. 아마 어드민 권한도 제거할 수 있을 겁니다..

    왜 그런 기능을 찾는지 모르겠군요..

    즐푸하세여..

    타락천사..
  • Profile
    이경돈 2003.06.11 19:25
    나쁜 목적으로 사용하려고 하는건 아니고.. 사용하려고 하는 목적은 IIS을 이용해서 저희 프로그램은 첨부파일 같이 보냅니다..
    사실 보낸다 보기보다.. 공유를 한다고 보면 되죠...
    NTFS에서 사용하려고 하는 이유는 저희가 서버를 설치할때. IIS을 자동으로 잡으려고 하고 있는데...다른 것들은 다 되는데.. 가끔 폴더에 권한을 줘야.. 제래로 실행 되는 경우가 있다고 합니다..
    그래서 사용자가 쉽게 설치 할수 있도록 그걸 프로그래밍 하려고 합니다.. 나쁜 목적에 사용하려고 하는건 아닙니다.