Ich versuche unter Windows 7 ein Named Pipe zu erzeugten welches mit verminderten Sicherheitsattributen läuft damit der Internet Explorer im Protected Mode darauf zugreifen kann.
Es klappt jedoch nicht.
LastGetError liefert das: "The revision level is unknown".
Wenn ich @FSA durch nil ersetzte wird ein normaler Named Pipe erzeugt, der auch funktioniert.
Hier der Code:
Delphi-Quellcode:
...
uses
Classes,
JwaAclApi,
JwaAccCtrl,
JwaSddl,
JwaWinBase,
Windows,
JwaWinNT,
Dialogs,
SysUtils;
...
implementation
procedure StartServer;
var
FSA: SECURITY_ATTRIBUTES;
FSD : JwaWinNT.PSECURITY_DESCRIPTOR;
sDescriptor: string;
begin
FHandle := INVALID_HANDLE_VALUE;
sDescriptor := 'S:(ML;;NW;;;LW)';
if JwaSddl.ConvertStringSecurityDescriptorToSecurityDescriptor( PChar(sDescriptor),
SECURITY_DESCRIPTOR_REVISION,
FSD,
NIL ) then
begin
FSA.lpSecurityDescriptor := @FSD;
FSA.nLength := sizeof(SECURITY_ATTRIBUTES);
FSA.bInheritHandle := True;
FHandle := CreateNamedPipe(PChar(FPipeName), PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES, SizeOf(RPIPEMessage), SizeOf(RPIPEMessage),
NMPWAIT_USE_DEFAULT_WAIT, @FSA);
if FHandle = INVALID_HANDLE_VALUE then
ShowMessage('error: '+SysErrorMessage(GetLastError));
end else
begin
Showmessage('error #1');
end;
end;