Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Named Pipe mit verminderten Rechten

  Alt 1. Dez 2010, 19:44
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;
  Mit Zitat antworten Zitat