2010-05-09 42 views

回答

2

那麼,根據this documentation

的CoCreateInstance和完整性級別

的CoCreateInstance的行爲在Windows Vista已經改變,以防止低IL客戶從默認綁定到COM服務器。服務器必須通過指定SACL來明確允許這樣的綁定。是CoCreateInstance的變化如下:

  1. 當啓動一個COM服務器過程中,服務器進程令牌的IL被設置成客戶端或服務器令牌IL的較低者。
  2. 默認情況下,COM將阻止低IL客戶端綁定到正在運行的任何COM服務器實例。要允許綁定,COM服務器的啓動/激活安全描述符必須包含一個SACL,該SACL指定低IL標籤(請參閱前面的示例代碼以創建此類安全描述符)。

因此,啓動一個COM服務器的新實例時,它也將以低完整性運行。 可以附加到現有的高完整性服務,但必須在SACL中明確啓用。我猜這是潛在的安全風險,因爲如果COM服務器中存在緩衝區溢出(例如),攻擊代碼將最終以高完整性運行。這就是Microsoft爲什麼明確啓用此功能的原因,並且很可能只是爲了提供向後兼容性。