BHO上のIE EPMをサポートするために、従来の製品にいくつかの変更を加えようとしています。私はそれをロードすることができ、SetSite、DocumentCompleteなどのさまざまなメソッドが呼び出されます。IE EPM BHO内から名前付きパイプサーバーにアクセスする
Windowsサービスの内部で実行されている名前付きパイプサーバーに接続しようとすると、私は突っ込んでいるようです。
以前は、保護モードのIE BHOがLOW_INTEGRITY_SDDL_SACL( "S:(ML ;; NW ;;; LW)"を使用して、名前付きパイプサーバーにアクセスするように変更しました。コード内では、ConvertStringSecurityDescriptorToSecurityDescriptorメソッドを使用してセキュリティ記述子を作成し、実際のSDまたはSECURITY_ATTRIBUTESオブジェクトに対してSetSecurityDescriptorSaclを実行していました。これにより、BHOコードはSYSTEMサービスでホストされている名前付きパイプサーバーにアクセスできました。
私はおそらくいくつかの記事と最も有用な1本のポストだったと呼ば - これは基本的に完全なファイルへのアクセスを提供します
#define EPM_INTEGRITY_SDDL L"S:(ML;;NW;;;LW)D:(A;;FA;;;SY)(A;;FA;;;WD)(A;;FA;;;AC)"
からIs there a way to create a named pipe from an AppContainer BHO on IE11?
それが今のように見えるので、私はSDDLにいくつかの変更を行いました全員に、すべてのアプリケーションパッケージとDACL部分のシステム。私はそれがあまりにも容認されていることを知っていますが、私はSetSecurityDescriptorDaclを使っていればこれが少なくとも動作するはずです:-)
とにかく、SDを設定するコードは次のようになります。私はここに何かを逃していますか
if (!ConvertStringSecurityDescriptorToSecurityDescriptor(EPM_INTEGRITY_SDDL, SDDL_REVISION_1, &pLISD, NULL))
{
OutputDebugString(L"Unable to get the app-container integrity security descriptor");
return false;
}
PACL pAcl = 0;
BOOL bAclPresent = FALSE;
BOOL bAclDefaulted = FALSE;
if (!GetSecurityDescriptorSacl(pLISD, &bAclPresent, &pAcl, &bAclDefaulted) || !bAclPresent)
{
return false;
}
if (!SetSecurityDescriptorSacl(pSecurityDesc, TRUE, pAcl, FALSE))
{
return false;
}
pAcl = 0;
bAclPresent = FALSE;
bAclDefaulted = FALSE;
if (!GetSecurityDescriptorDacl(pLISD, &bAclPresent, &pAcl, &bAclDefaulted) || !bAclPresent)
{
OutputDebugString(L"Setting to low integrity : No DACL Available");
return false;
}
if (!SetSecurityDescriptorDacl(pSecurityDesc, TRUE, pAcl, FALSE))
{
OutputDebugString(L"Setting to low integrity : Unable to set the DACL");
return false;
}
素敵な 'EPM_INTEGRITY_SDDL'はありがとうございます。魅力的なように動作し、Windows 10のIE11でEPMモードで動作するBHOは、通常のデスクトッププロセスで作成された共有メモリを開くことができます。はい、私は知っている、それは行く方法ではない(別名 "巨大なバックドア")が、私はいつかブローカーのルートに行くでしょう... – manuell
乾杯!私が理解しているように、通常のデスクトッププロセスはあなたの "ブローカー"です。私の場合、ブローカプロセスとしてWindowsサービス(セッション0で実行中)を作成しようとしていましたが、SDDLを使用してもセッション間要求は機能しません。以下の解決策は、双方向のコミュニケーションをどう扱うかを教えてくれます。 – Vivek