IBackgroundCopyJob3::SetFileACLFlags メソッド (bits2_0.h)

SMB を使用してファイルをダウンロードまたはアップロードするときに維持する所有者と ACL 情報を指定します。

構文

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

パラメーター

[in] Flags

SMB を使用してファイルを転送するときに維持する所有者と ACL 情報を識別するフラグ。 このメソッドの後続の呼び出しによって、前のフラグが上書きされます。 ジョブからフラグを削除するには、0 を指定します。 次のフラグの任意の組み合わせを指定できます。

意味
BG_COPY_FILE_OWNER
設定すると、ファイルの所有者情報が保持されます。 それ以外の場合は、 Complete メソッドを呼び出すユーザーがファイルを所有します。

このフラグを設定するには、SeRestorePrivilege が必要です。 administrators グループには SeRestorePrivilege 特権が含まれています。

BG_COPY_FILE_GROUP
設定すると、ファイルのグループ情報が保持されます。 それ以外の場合、BITS はジョブ所有者のプライマリ グループを使用してグループ情報をファイルに割り当てます。

このフラグを設定するには、SeRestorePrivilege が必要です。 administrators グループには SeRestorePrivilege 特権が含まれています。

BG_COPY_FILE_DACL
設定されている場合、BITS はソース ファイルから明示的な ACE をコピーし、継承可能な ACE を宛先フォルダーからコピーします。 それ以外の場合、BITS は継承可能な ACE をコピー先フォルダーからコピーします。 宛先フォルダーに継承可能な ACE が含まれていない場合、BITS は所有者のアカウントの既定の DACL を使用します。
BG_COPY_FILE_SACL
設定されている場合、BITS はソース ファイルから明示的な ACE をコピーし、継承可能な ACE を宛先フォルダーからコピーします。 それ以外の場合、BITS は継承可能な ACE をコピー先フォルダーからコピーします。

このフラグを設定するには、ローカル コンピューターとリモート コンピューターの両方に SeSecurityPrivilege が必要です。 administrators グループには SeSecurityPrivilege 特権が含まれています。

BG_COPY_FILE_ALL
設定されている場合、BITS は所有者と ACL 情報をコピーします。 これは、すべてのフラグを個別に設定するのと同じです。

戻り値

このメソッドは、次の HRESULT 値と他の値を返します。

リターン コード 説明
S_OK
フラグを正常に設定しました。
BG_E_INVALID_STATE
ジョブが BG_JOB_STATE_TRANSFERRED 状態に移行する前に、このメソッドを呼び出す必要があります。
E_INVALIDARG
Flags パラメーターには、一覧にないフラグが含まれています。

注釈

これらのフラグは、SMB プロトコルを指定するリモート ファイル名に適用されます。 BITS は HTTP 転送のフラグを無視します。

BITS は、SMB ファイルのファイル タイム スタンプと属性 (拡張属性ではない) を伝達します。

BITS は、一時転送ファイルを 作成 する場合ではなく、ファイル転送の完了時に所有者と ACL 情報をファイルに適用します。 BITS は、一時転送ファイルを作成するときにセキュリティ記述子を指定しません (ファイルは宛先ディレクトリから ACL 情報を継承します)。 転送されたデータが機密性の高い場合、アプリケーションは、許可されていないアクセスを防ぐために、宛先ディレクトリに適切な ACL を指定する必要があります。

ジョブ内のすべてのファイルに対して適切な所有者と ACL 情報が設定されていることを確認するには、ジョブを作成した後、 IBackgroundCopyJob::Resume メソッドを呼び出す前に、このメソッドを呼び出します。 それ以外の場合、フラグが設定される前に転送されたファイルには、適切な所有者と ACL 情報は含まれません。

このメソッドは、XCopy DOS コマンドの後にモデル化されます。

FAT ファイル システムにダウンロードする場合、所有者と ACL の情報は保持されません。

ユーザーが所有者または ACL 情報をコピーするためのローカル コンピューターとリモート コンピューターに対する権限を持っていない場合、BITS はジョブを一時的なエラー状態にし、エラー コードを E_ACCESSDENIEDに設定します。

次の例では 、SetFileACLFlags メソッドを呼び出して、BITS がダウンロードするファイルで保持する所有者と ACL 情報を指定する方法を示します。 この例では、 IBackgroundCopyJob 変数 pJob が有効で、新しいジョブを指し、中断されていると想定しています。

     IBackgroundCopyJob *pJob;
     IBackgroundCopyJob3 *pJob3 = NULL;

     //Need to query the IBackgroundCopyJob interface for an IBackgroundCopyJob3
     //interface pointer. The IBackgroundCopyJob3 interface contains the SetACLFlags method.
     hr = pJob->QueryInterface(__uuidof( IBackgroundCopyJob3 ), (void**)&pJob3;);
     if (S_OK == hr)
     {
          pJob->Release(); //No longer need the IBackgoundCopyJob interface pointer.

          //Copy the group and DACL information for each file.
          hr = pJob3->SetACLFlags(BG_COPY_FILE_GROUP | BG_COPY_FILE_DACL);
          if (FAILED(hr))
          {
               //Handle error.
          }

          ... //Add one or more files and resume the job.
          pJob3->Resume();

          //When done, release the interface pointer.
          pJob3->Release();
     }
     else
     {
          //Handle error. QueryInterface will return E_NOINTERFACE if the version of BITS
          //running on the computer is less than BITS 2.0.
     }

要件

要件
サポートされている最小のクライアント Windows Vista、Windows XP と SP2、Windows Server 2003 のKB842773、Windows XP
サポートされている最小のサーバー Windows Server 2008、Windows Server 2003 SP1
対象プラットフォーム Windows
ヘッダー bits2_0.h (Bits.h を含む)
Library Bits.lib
[DLL] BitsPrx3.dll

こちらもご覧ください

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags