IBackgroundCopyJob3::SetFileACLFlags 方法 (bits2_0.h)
指定使用SMB下載或上傳檔案時所要維護的擁有者和 ACL 資訊。
語法
HRESULT SetFileACLFlags(
[in] DWORD Flags
);
參數
[in] Flags
旗標,識別使用SMB傳輸檔案時所要維護的擁有者和ACL資訊。 對這個方法的後續呼叫會覆寫先前的旗標。 指定 0 以從作業中移除旗標。 您可以指定下列旗標的任何組合。
值 | 意義 |
---|---|
|
如果設定,則會維護檔案的擁有者資訊。 否則,呼叫 Complete 方法的用戶會擁有檔案。
您必須有 SeRestorePrivilege 才能設定此旗標。 系統管理員群組包含 SeRestorePrivilege 許可權。 |
|
如果設定,則會維護檔案的群組資訊。 否則,BITS 會使用作業擁有者的主要群組,將群組資訊指派給檔案。
您必須有 SeRestorePrivilege 才能設定此旗標。 系統管理員群組包含 SeRestorePrivilege 許可權。 |
|
如果設定,BITS 會從來源檔案複製明確的 ACE,並從目的地資料夾複製可繼承的 ACE。 否則,BITS 會從目的地資料夾複製可繼承的ACE。 如果目的地資料夾不包含可繼承的 ACE,BITS 會使用來自擁有者帳戶的預設 DACL。 |
|
如果設定,BITS 會從來源檔案複製明確的 ACE,並從目的地資料夾複製可繼承的 ACE。
否則,BITS 會從目的地資料夾複製可繼承的ACE。
您必須在本機和遠端電腦上擁有 SeSecurityPrivilege,才能設定此旗標。 系統管理員群組包含 SeSecurityPrivilege 許可權。 |
|
如果設定,BITS 會複製擁有者和 ACL 資訊。 這與個別設定所有旗標相同。 |
傳回值
這個方法會傳回下列 HRESULT 值,以及其他值。
傳回碼 | Description |
---|---|
|
成功設定旗標。 |
|
在作業轉換為 BG_JOB_STATE_TRANSFERRED 狀態之前,您必須先呼叫此方法。 |
|
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 |