1

私はC++でzipプログラムに取り組んでいます。圧縮時にファイルのアクセス許可が保持されるように、セキュリティ記述子を追加したいと思います。ZlibのMinizipを使用してファイルを圧縮していますが、Minizipにファイルのアクセス許可を保存する機能がないことを認識しています。余分なフィールドにセキュリティの説明を手動で追加する必要があるかもしれないと思います。

ファイルのセキュリティ権限を取得するにはどうすればよいですか?

zipファイルのセキュリティ記述子をフォーマットするにはどうすればよいですか?

4

1 に答える 1

1

Info-ZIPのzipおよびunzipユーティリティをご覧ください。これらは、基本のミニジップ機能よりもはるかに広範なオペレーティングシステムのサポートを提供します。

自分で行う場合は、Info-ZIPappnoteを参照してください。Windowsの追加フィールドはそこに定義されており、ここにコピーされています。

         -PKWARE Win95/WinNT Extra Field (0x000a):
          =======================================

          The following description covers PKWARE's "NTFS" attributes
          "extra" block, introduced with the release of PKZIP 2.50 for
          Windows. (Last Revision 20001118)

          (Note: At this time the Mtime, Atime and Ctime values may
          be used on any WIN32 system.)
         [Info-ZIP note: In the current implementations, this field has
          a fixed total data size of 32 bytes and is only stored as local
          extra field.]

          Value         Size        Description
          -----         ----        -----------
  (NTFS)  0x000a        Short       Tag for this "extra" block type
          TSize         Short       Total Data Size for this block
          Reserved      Long        for future use
          Tag1          Short       NTFS attribute tag value #1
          Size1         Short       Size of attribute #1, in bytes
          (var.)        SubSize1    Attribute #1 data
          .
          .
          .
          TagN          Short       NTFS attribute tag value #N
          SizeN         Short       Size of attribute #N, in bytes
          (var.)        SubSizeN    Attribute #N data

          For NTFS, values for Tag1 through TagN are as follows:
          (currently only one set of attributes is defined for NTFS)

          Tag        Size       Description
          -----      ----       -----------
          0x0001     2 bytes    Tag for attribute #1
          Size1      2 bytes    Size of attribute #1, in bytes (24)
          Mtime      8 bytes    64-bit NTFS file last modification time
          Atime      8 bytes    64-bit NTFS file last access time
          Ctime      8 bytes    64-bit NTFS file creation time

          The total length for this block is 28 bytes, resulting in a
          fixed size value of 32 for the TSize field of the NTFS block.

          The NTFS filetimes are 64-bit unsigned integers, stored in Intel
          (least significant byte first) byte order. They determine the
          number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch",
          which is "01-Jan-1601 00:00:00 UTC".
于 2012-10-04T17:24:01.387 に答える