PDA

View Full Version : سوال: در يافت خطا 87 در هنگام استفاده از تابع SetEntriesInAcl



pad_kay
چهارشنبه 01 دی 1389, 10:30 صبح
با سلام
فكر كنم سوال گويا باشد ولي بيشتر توضيح مي دم
من در هنگام استفاده از تابع SetEntriesInAcl كد خطا 87 رو مي گيرم
كد خود و ساير كد هاي مشابه رو بررسي كردم
لازم به ذكر است كه اگر كد هاي ذكر شده را در دلفي 2010 استفاده كنم خطا نمي دهد
ولي در دلفي 7 مي دهد


pDacl := nil;
pSD := nil;
pNewDacl := nil;
dwRes := GetSecurityInfo(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDacl, nil, pSD);
if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
end;
User:='CURRENT_USER';
ZeroMemory(@ea, sizeof(EXPLICIT_ACCESS));
ea.grfAccessPermissions :=SECTION_MAP_WRITE;
ea.grfAccessMode := GRANT_ACCESS;
ea.grfInheritance := NO_INHERITANCE;
ea.Trustee.TrusteeForm := TRUSTEE_IS_NAME;
ea.Trustee.TrusteeType := TRUSTEE_IS_USER;
ea.Trustee.ptstrName := PAnsiChar(user[1]);

dwRes := SetEntriesInAcl(1, @ea, pDacl, pNewDacl);
if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
raise Exception.Create(Format('Error ? %u', [dwRes]))
end;
dwRes := SetSecurityInfo
(hSection, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pNewDacl, nil);
if ERROR_SUCCESS <> dwRes then
begin
if Assigned(pSD) then
LocalFree(Hlocal(pSD^));
if Assigned(pNewDacl) then
LocalFree(HLocal(pNewDacl));
end;

vcldeveloper
چهارشنبه 01 دی 1389, 16:12 عصر
من در هنگام استفاده از تابع SetEntriesInAcl كد خطا 87 رو مي گيرم
خطا داره بهتون میگه که یکی از پارامترهای ورودی تابع نامعتبر هست. من بررسی نکردم که کدوم پارامتر رو اشتباه استفاده کردید، ولی اون خطا بهتون کمک میکنه که متوجه بشید مشکل در یکی از پارامترهاتون هست، و بررسی خودتون رو محدود به اونها بکنید.

pad_kay
دوشنبه 06 دی 1389, 12:38 عصر
خطا داره بهتون میگه که یکی از پارامترهای ورودی تابع نامعتبر هست.
با تشكر از شما من كليه پارامترها را چك كردم و به مورد خاصي نرسيدم.
در صورت امكان من را بيشتر راهنمايي كنيد.