2017-05-11 4 views
-1

低完全性プロセスから新しい名前付き変異体を作成しようとしています。このコードは、高い整合性プロセスでは優れていますが、低および中位の整合性では失敗します。低い完全性プロセスで名前付き変異体オブジェクトを作成できますか?

RtlInitUnicodeString(&Name, L"\\MutantName"); 
InitializeObjectAttributes(&Attr, &Name, OBJ_INHERIT | OBJ_OPENIF, NULL, NULL); 
NTStatus = NtCreateMutant(&Mutant, MUTANT_ALL_ACCESS, &Attr, 0); 

私はNTStatus = ERROR_ACCESS_DENIED (0xc0000022)を取得しています。

完全性の低いプロセスから突然変異体を作成することは可能ですか?はいの場合 - 誰かが私が間違っていることを知っていますか?ありがとう!

答えて

1

ロー・インテグリティ・プロセスでは、オブジェクト・ディレクトリにLow Mandatoryラベルを持つオブジェクトのみを作成できます。ルートオブジェクトディレクトリにはこのラベルはありません。 \BaseNamedObjectsがあるので、Low Integrityプロセスから変異体を作成することができます:

RtlInitUnicodeString(&Name, L"\\BaseNamedObjects\\MutantName"); 
関連する問題