-
MY PROJECTS
-
Recent Posts
- SpringBoot.Making our first starter and autoconfiguration
- Spring. Creating main annotation to start business logic
- Spring.Reading from properties file
- Spring.How to define spring version inside springBoot ?
- SpringBoot App inside Docker
- Kafka.FirstExperience
- Docker.MySql and Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
- Gradle.Tips
- Spring.AppConfig
- Leetcode.Best-time-to-buy-and-sell-stock
- LeetCode.ClimbStairs.Fibbonacci
- Leetcode.Roman-to-integer
- LeetCode.Palindrome-number
- Java.DesignPatterns.Lightweight
- Java.DesignPatterns.Proxy
- Java.DesignPatterns.Facade
- Java.DesignPatterns.Composite
- Java.DesignPatterns.Bridge
- Java. Strange OOP thing
- Java.Classpath
Categories
- Aptana
- Azure
- C#
- DataSnap
- DBExpress
- Delphi
- Delphi и сети
- Delphi. Язык программирования
- ExtJS
- FastReport
- FireDAC
- FireMonkey
- GIT
- ICS
- IDE
- IIS
- Indy
- InnoSetup
- javascript
- jQuery
- JSON
- LiveBindings
- MSHTML
- MySQL
- PHP
- REST
- Ribbons
- SMS
- SQL инструкции
- SVN
- TRichView
- UniGui
- WebBroker
- WinAPI
- Windows
- Алгоритмы
- Без рубрики
- Деревья
- Ищу ответ
- Компонентостроение
- Мои компоненты
- Начальный уровень
- Обработка исключений
- Парсинг
- Потоки(Threads)
- Регулярные выражения
- Тестирование приложений
Daily Archives: 21.01.2017
Delphi. WinAPI. CheckFileAccess – проверка прав файла на чтение / запись / исполнение и других
Под uses пишем
1 2 3 |
{$IF RTLVersion >= 20.00} {$DEFINE USEUNICODE} {$IFEND} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const FILE_READ_DATA = $0001; FILE_WRITE_DATA = $0002; FILE_APPEND_DATA = $0004; FILE_READ_EA = $0008; FILE_WRITE_EA = $0010; FILE_EXECUTE = $0020; FILE_READ_ATTRIBUTES = $0080; FILE_WRITE_ATTRIBUTES = $0100; FILE_GENERIC_READ = (STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE); FILE_GENERIC_WRITE = (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE); FILE_GENERIC_EXECUTE = (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE); FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1FF; |
Функция из одного проекта со StackOverFlow
Posted in Delphi
Comments Off on Delphi. WinAPI. CheckFileAccess – проверка прав файла на чтение / запись / исполнение и других
Delphi. WinAPI. Получение дескриптора безопасности файла
Получение дескриптора безопасности файла По мотивам обсуждения на форуме Способ №1
1 2 3 4 5 6 7 8 9 10 11 |
// Loading from DLL function ConvertSecurityDescriptorToStringSecurityDescriptor_( SecurityDescriptor: PSECURITY_DESCRIPTOR; RequestedStringSDRevision: DWORD; SecurityInformation: SECURITY_INFORMATION; StringSecurityDescriptor: PPChar; StringSecurityDescriptorLen: PCardinal ): Boolean; stdcall; external 'ADVAPI32.DLL' name {$IFDEF USEUNICODE}'ConvertSecurityDescriptorToStringSecurityDescriptorW'{$ELSE} 'ConvertSecurityDescriptorToStringSecurityDescriptorA'{$ENDIF}; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function TfMain.GetSecurityDescriptorInfoAboutFile(AFilePath:String):Boolean; var SD: PSECURITY_DESCRIPTOR; Len: Cardinal; s: PChar; begin GetFileSecurity(PChar(AFilePath), DACL_SECURITY_INFORMATION, nil, 0, Len); SD := HeapAlloc(GetProcessHeap, 8, Len); GetFileSecurity(PChar(AFilePath), DACL_SECURITY_INFORMATION, SD, Len, Len); ConvertSecurityDescriptorToStringSecurityDescriptor_(SD, SDDL_REVISION_1, DACL_SECURITY_INFORMATION, @s, @Len); HeapFree(GetProcessHeap, 0, SD); memo.Lines.Add(s) end; |
Способ №2 – дает информацию не только о DACL_SECURITY_INFORMATION, но и о SID владельца объекта и группы