共用方式為


ImpersonateNamedPipeClient 函式 (namedpipeapi.h)

ImpersonateNamedPipeClient 函式會模擬命名管道用戶端應用程式。

語法

BOOL ImpersonateNamedPipeClient(
  [in] HANDLE hNamedPipe
);

參數

[in] hNamedPipe

命名管道的句柄。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

ImpersonateNamedPipeClient 函式允許命名管道的伺服器端模擬用戶端。 呼叫此函式時,命名管道文件系統會變更呼叫 進程的 線程,以開始模擬從管道讀取的最後一則訊息 的安全性內容 。 只有管道的伺服器端可以呼叫此函式。

伺服器可以在模擬完成時呼叫 RevertToSelf 函式。

重要 如果 ImpersonateNamedPipeClient 函式失敗,則不會模擬用戶端,而且所有後續用戶端要求都會在呼叫函式之進程的安全性內容中進行。 如果呼叫進程是以特殊許可權帳戶執行,它可以執行不允許客戶端執行的動作。 為了避免安全性風險,呼叫進程應該一律檢查傳回值。 如果傳回值指出函數調用失敗,則不應該執行任何用戶端要求。
 
所有模擬函式,包括 ImpersonateNamedPipeClient ,如果下列其中一項成立,則允許要求的模擬:
  • 要求的令牌模擬層級小於 SecurityImpersonation,例如 SecurityIdentificationSecurityAnonymous
  • 呼叫端具有 SeImpersonatePrivilege 許可權。
  • 呼叫端登入會話中的進程 (或其他進程,) 透過 LogonUserLsaLogonUser 函式使用明確認證來建立令牌。
  • 已驗證的身分識別與呼叫端相同。
Windows XP 與 SP1 和更早版本: 不支援 SeImpersonatePrivilege 許可權。

範例

如需使用此函式的範例,請參閱 使用 ACL 驗證用戶端存取

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 namedpipeapi.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

授權函式

用戶端/伺服器 存取控制 概觀

DdeImpersonateClient

DuplicateToken

RevertToSelf