Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Помогите please с курсовым...   Найти похожие ветки 

 
Kerk ©   (2003-12-18 11:14) [0]

Может кто-нибудь сказать, что здесь не так?


...
const
DeviceName: PWideChar = "\Device\PhysicalMemory";
...
var
PhysMem: THandle;
...
var
PhysMemString: TUnicodeString;
attributes: TObjectAttributes;
OldAcl,NewAcl: PACL;
SD: PSECURITY_DESCRIPTOR;
Access: EXPLICIT_ACCESS;
begin
RtlInitUnicodeString(@PhysMemString,DeviceName);
with attributes do
begin
Length := SizeOf(TObjectAttributes);
RootDirectory := 0;
Attributes := OBJ_CASE_INSENSITIVE or OBJ_KERNEL_HANDLE;
ObjectName := @PhysMemString;
SecurityDescriptor := nil;
SecurityQualityOfService := nil;;
end;
Result := NtOpenSection(@PhysMem,READ_CONTROL or WRITE_DAC or SECTION_MAP_READ,
@attributes) <> INVALID_HANDLE_VALUE;
if not Result then Exit;

__DeviceFlags := PD_DEVICEFLAG_READONLY;
if GetSecurityInfo(PhysMem,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,
nil,nil,@OldAcl,nil,SD) = ERROR_SUCCESS then
begin
Access.grfAccessPermissions := SECTION_MAP_WRITE;
Access.grfAccessMode := GRANT_ACCESS;
Access.grfInheritance := NO_INHERITANCE;
Access.Trustee.pMultipleTrustee := nil;
Access.Trustee.MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE;
Access.Trustee.TrusteeForm := TRUSTEE_IS_NAME;
Access.Trustee.TrusteeType := TRUSTEE_IS_USER;
Access.Trustee.ptstrName := "CURRENT_USER";
if SetEntriesInAcl(1,@Access,OldAcl,NewAcl) = ERROR_SUCCESS then
begin
if SetSecurityInfo(PhysMem,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,
nil,nil,@NewAcl,nil) = ERROR_SUCCESS then // вот здесь возвращаемое значение ERROR_INVALID_PARAMETER :(
begin
CloseHandle(PhysMem);
Result := NtOpenSection(@PhysMem,SECTION_MAP_WRITE,@attributes) <> INVALID_HANDLE_VALUE;
__DeviceFlags := 0;
end;
LocalFree(DWORD(NewAcl));
end;
LocalFree(DWORD(SD));
end;
if not Result then Exit;
...


На всякий случай:
Код выполняется в DLL с правами админа. Windows XP Pro SP1


 
McSimm ©   (2003-12-18 11:29) [1]


> Может кто-нибудь сказать, что здесь не так?


По коду не скажу - не знаю. Но вопрос надо задавать иначе.
Не понятно ни в чем проблема ни о чем речь.

Тема сообщения обязательна должна отражать суть вопроса. Иначе модераторы будут удалять ветки.


 
Kerk ©   (2003-12-18 11:33) [2]

McSimm © (18.12.03 11:29) [1]

> По коду не скажу - не знаю. Но вопрос надо задавать иначе.
> Не понятно ни в чем проблема ни о чем речь.

> Тема сообщения обязательна должна отражать суть вопроса. Иначе > модераторы будут удалять ветки.

Прошу меня извинить...

Уточню:
функция отмеченная комментарием возвращает ERROR_INVALID_PARAMETER, хотя должна возвращать ERROR_SUCCESS

Вопрос непосредственно касается WinAPI:
какой параметр неверен?


 
MBo ©   (2003-12-18 11:54) [3]

SetSecurityInfo(... @NewAcl,nil)
надо ли?


 
Kerk ©   (2003-12-18 12:04) [4]

MBo © (18.12.03 11:54) [3]
Благодарю!



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
14-25583
Вася Добрый
2003-12-17 10:52
2004.01.09
IBExpert+Firebird


4-25665
Скал
2003-11-05 18:30
2004.01.09
регионы RGN


7-25627
MakNik
2003-10-29 14:59
2004.01.09
Как програмно создать новую папку?


1-25412
del_programmer
2003-12-24 14:59
2004.01.09
skin


1-25331
dss
2003-12-22 15:58
2004.01.09
OLE: проблема переноса на другую машину