Hi,
diese
API-Aufrufe treiben mich noch zur Weißglut. Ich habe jetzt einfach mal das ganze versucht, wie du es erklärt hast und wie es eigentlich funktionieren müsste. Jetzt sieht das ganze Gerüst ungefähr so aus:
Delphi-Quellcode:
// create security-descriptor
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, dwProcToken);
if (CreatePrivateObjectSecurity(nil, nil, sdSecurity, false,
dwProcToken,
gmGenMap) = false) then begin
MessageDlg('ShareManager should be create an object for system-security.'
+' But this has failed.', mtError, [mbOK], 0);
Exit;
end;
// fill structure with data
pBuffer.shi502_netname := StrToWC(edtName.Text);
pBuffer.shi502_type := STYPE_DISKTREE;
pBuffer.shi502_remark := StrToWC(edtRemark.Text);
pBuffer.shi502_permissions := dwPerm;
pBuffer.shi502_max_uses := DWORD(-1);
pBuffer.shi502_current_uses := 0;
pBuffer.shi502_path := StrToWC(edtPath.Text);
pBuffer.shi502_reserved := 0;
pBuffer.shi502_security_descriptor := @sdSecurity;
// now add resource
case NetShareAdd(nil, 502, @pBuffer, @dwResult) of
{...}
Jetzt wird zwar der Security-Descriptor erstellt, allerdings bekomme ich immer noch
ERROR_INVALID_PARAM für
shi*_security_descriptor zurück.
Irgendwo steckt also immer noch ein Fehler. Kann sich das noch irgendeiner erklären? Ich kann es zumindest nicht.
Chris