IBackgroundCopyJob3::SetFileACLFlags 方法 (bits2_0.h)

指定使用SMB下載或上傳檔案時所要維護的擁有者和 ACL 資訊。

語法

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

參數

[in] Flags

旗標,識別使用SMB傳輸檔案時所要維護的擁有者和ACL資訊。 對這個方法的後續呼叫會覆寫先前的旗標。 指定 0 以從作業中移除旗標。 您可以指定下列旗標的任何組合。

意義
BG_COPY_FILE_OWNER
如果設定,則會維護檔案的擁有者資訊。 否則,呼叫 Complete 方法的用戶會擁有檔案。

您必須有 SeRestorePrivilege 才能設定此旗標。 系統管理員群組包含 SeRestorePrivilege 許可權。

BG_COPY_FILE_GROUP
如果設定,則會維護檔案的群組資訊。 否則,BITS 會使用作業擁有者的主要群組,將群組資訊指派給檔案。

您必須有 SeRestorePrivilege 才能設定此旗標。 系統管理員群組包含 SeRestorePrivilege 許可權。

BG_COPY_FILE_DACL
如果設定,BITS 會從來源檔案複製明確的 ACE,並從目的地資料夾複製可繼承的 ACE。 否則,BITS 會從目的地資料夾複製可繼承的ACE。 如果目的地資料夾不包含可繼承的 ACE,BITS 會使用來自擁有者帳戶的預設 DACL。
BG_COPY_FILE_SACL
如果設定,BITS 會從來源檔案複製明確的 ACE,並從目的地資料夾複製可繼承的 ACE。 否則,BITS 會從目的地資料夾複製可繼承的ACE。

您必須在本機和遠端電腦上擁有 SeSecurityPrivilege,才能設定此旗標。 系統管理員群組包含 SeSecurityPrivilege 許可權。

BG_COPY_FILE_ALL
如果設定,BITS 會複製擁有者和 ACL 資訊。 這與個別設定所有旗標相同。

傳回值

這個方法會傳回下列 HRESULT 值,以及其他值。

傳回碼 Description
S_OK
成功設定旗標。
BG_E_INVALID_STATE
在作業轉換為 BG_JOB_STATE_TRANSFERRED 狀態之前,您必須先呼叫此方法。
E_INVALIDARG
Flags 參數包含不在清單中的旗標。

備註

這些旗標適用於指定SMB通訊協定的遠端檔名。 BITS 會忽略 HTTP 傳輸的旗標。

BITS 會傳播SMB檔案的檔案時間戳和屬性, (非擴充屬性) 。

BITS 會在文件傳輸完成時,將擁有者和 ACL 資訊套用至檔案,而不是 在建立 暫存傳輸檔案時套用。 當 BITS 建立暫存傳輸檔案時,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、KB842773 Windows Server 2003 和 Windows XP
最低支援的伺服器 Windows Server 2008、Windows Server 2003 SP1
目標平台 Windows
標頭 bits2_0.h (包含 Bits.h)
程式庫 Bits.lib
Dll BitsPrx3.dll

另請參閱

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags