Ti piace questa:
SECURITY_DESCRIPTOR SD;
InitializeSecurityDescriptor(&SD, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&SD, TRUE, NULL, FALSE);
ho omesso controllo degli errori per brevità. Non lo faresti.
Poi quando si chiama CreateNamedPipe
è possibile impostare la sicurezza attribuisce disco come questo:
SA.nLength = sizeof(SA);
SA.lpSecurityDescriptor = &SD;
SA.bInheritHandle = TRUE;
La documentazione per SetSecurityDescriptorDacl
stati:
Quando il parametro pDacl non punta a un DACL e il flag bDaclPresent è TRUE, viene specificato un DACL NULL. Tutto l'accesso è permesso. Non si dovrebbe utilizzare un DACL NULL con un oggetto perché qualsiasi utente può modificare DACL e proprietario del descrittore di sicurezza. Ciò interferirà con l'uso dell'oggetto.
Quindi, quanto sopra è come farlo, ma la documentazione sottolinea che non si dovrebbe fare così.
fonte
2013-01-24 13:34:00
Hm, la parte di cambiare la proprietà è stata una sorpresa. Ma nel mio caso non è un problema, ho solo bisogno di essere in grado di connettermi dal mio exe indipendentemente dall'utente che lo esegue, e il collegamento alla pipe non permetterà loro di hackerare il mio servizio Windows o altro. Ma è comunque interessante - è possibile concedere l'accesso a tutti per connettersi, senza consentire loro di cambiare proprietà? – sashoalm
Sì, quindi è necessario utilizzare un DACL reale. Il codice nel mio commento alla tua domanda precedente spiega come lo faccio. –