主控台緩衝區安全性和存取權限

Windows 安全性模型可讓您控制主控台輸入緩衝區和控制台畫面緩衝區的存取。 如需安全性的詳細資訊,請參閱 訪問控制模型

Console 物件安全性描述項

當您呼叫 CreateFile CreateConsoleScreenBuffer 函式時,您可以指定主控台輸入和控制台畫面緩衝區的安全性描述。 如果您指定 NULL,物件會取得預設的安全性描述元。 控制台緩衝區的預設安全性描述元中的 ACL 來自建立者的主要或模擬令牌。

CreateFileCreateConsoleScreenBuffer GetStdHandle傳回的句柄具有GENERIC_READGENERIC_WRITE訪問許可權。

有效的訪問許可權包括 GENERIC_READGENERIC_WRITE一般訪問許可權

意義
GENERIC_READ (0x800000000L) 要求主控台畫面緩衝區的讀取許可權,讓進程能夠從緩衝區讀取數據。
GENERIC_WRITE (0x400000000L) 要求主控台畫面緩衝區的寫入存取權,讓進程能夠將數據寫入緩衝區。

注意

通用 Windows 平台 主控台應用程式和比附加控制台低完整性層級的人,即使上述安全描述項通常允許它,也禁止讀取輸出緩衝區和寫入輸入緩衝區。 如需詳細資訊,請參閱下面的錯誤方式動詞討論。

錯誤的動詞命令

即使物件具有特定允許讀取或寫入的安全性描述元,控制台物件的某些作業仍會遭到拒絕。 這特別涉及在縮減許可權內容中執行的命令行應用程式,這些應用程式會在更寬鬆的內容中共用命令行應用程式所建立的控制台會話。

「錯誤動詞」一詞旨在套用至其中一個控制台物件之正常流程相反的作業。 具體而言,輸出緩衝區的一般流程正在寫入,而輸入緩衝區的一般流程正在讀取。 因此,「錯誤方式」就是讀取輸出緩衝區或寫入輸入緩衝區。 這些是低階控制台 I/O 函式檔中所述的函式。

這兩個案例可找到:

  1. 通用 Windows 平台 主控台應用程式。 由於這些是其他 通用 Windows 平台 應用程式的表親,因此他們承諾要與其他應用程式隔離,並提供使用者對其作業效果的保證。
  2. 任何刻意以低於現有工作階段完整性層級啟動的控制台應用程式,都可以在 CreateProcess 期間透過標籤或令牌操作來完成。

如果偵測到上述任一案例,控制台會將「錯誤方式動詞」旗標套用至命令行應用程式連線,並拒絕對下列 API 的呼叫,以減少層級之間的通訊面:

拒絕的呼叫將會收到 拒絕 存取的錯誤碼,與物件上的安全性描述項拒絕讀取或寫入許可權相同。