Pergunta

Eu estou tentando conectar um processo CGI para o meu serviço de janelas com um pipe nomeado. Meu código funciona muito bem usando outro servidor na minha máquina de desenvolvimento, mas no IIS existem problemas de segurança quando eu chamar CreateFile () no processo CGI.

O serviço Windows é o tubo servidor chamado e assim o processo CGI está tentando se conectar a esse pipe nomeado como um cliente.

Eu cavei um pouco de código que cria um descritor de segurança global com a SECURITY_WORLD_SID_AUTHORITY bandeira chamando:

  InitializeAcl()
  AddAccessAllowedAce()
  SetSecurityDescriptorDacl()

Mas eu realmente não entendem o conceito. Estou assumindo que o servidor CreateNamedPipe Pipe () deve ser chamado com este ACL na estrutura SECURITY_ATTRIBUTES mas que sobre o cliente de pipe nomeado?

Do I criar outro descritor de segurança global e chamar CreateFile () com isso?

Do I herdá-la com

 SecurityAttributes.bInheritHandle   = TRUE;

Do I apenas passar nulo na chamada CreateFile ()?

Foi útil?

Solução

Uma vez que o tubo é criado pelo servidor, apenas o servidor precisa especificar o ACL, o NULL usos clientes para o ACL.

A herança só se aplica se o pipe nomeado é criado em um processo e que os processos cria um novo processo no qual você deseja que o processo gerou a ter acesso directo ao punho (não reabrir o punho, em vez disso, obtém o valor alguma outra forma, como uma linha de comando).

Você pode usar o Process Explorer na sysinternals a vista nomeada tubos de abrir em um processo e, em seguida, olhar para o ACL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top