2

Windows XPSP2+で名前付きパイプを使用しようとしています。パイプサーバーは、ある種の管理者/システムレベルのアカウントとして実行されるサービスになります。パイプクライアントは、任意のユーザー、場合によってはゲスト、場合によっては管理者にすることができます。私の場合、ゲストアカウントが管理者として実行されているサービスと正常に通信できるようになっています。

クライアントコードでパイプの使用を開始する前に、パイプの反対側が実際に管理者/システムによって所有されていることを確認したいと思います。

GetSecurityInfo関数を発見しましたが、それをソリューションの一部として使用できるはずです。ただし、SIDから「管理者」チェックに移動する方法がわかりません。

4

1 に答える 1

1

管理者アカウント(システムアカウントを含む)によって作成されたすべてのオブジェクトのデフォルトの所有者は、よく知られているAdministratorsグループであり、作成したオブジェクトの所有権を管理者権限なしで他の人に割り当てることはできません。

したがって、次のように確認できます。

  • GetSecurityInfoを使用して、パイプオブジェクトの所有者のSIDをフェッチします。

  • WinBuiltinAdministratorsSidオプションを指定してCreateWellKnownSidを使用して、AdministratorsグループのSIDを作成します。

  • EqualSidを使用して、2つのSIDを比較します。

( CreateFileを使用して)パイプを開くときに、SECURITY_IDENTIFICATIONフラグを渡して、悪意のある可能性のあるサーバーがユーザーになりすますことができないようにしてください。

于 2012-10-22T20:47:40.877 に答える