Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Вниз

Права доступа   Найти похожие ветки 

 
markers ©   (2005-02-01 13:03) [0]

Подскажите пожалуйста, как можно узнать права в папке (В том числе и по сетке), можно ли из неё читать и писать, создавать новые файлы, удалить файлы и переименовывать.... Заранее спасибо;)


 
TUser ©   (2005-02-01 13:17) [1]

GetFileAttributesEx


 
markers ©   (2005-02-01 14:15) [2]

В стандартном хелпе по WinApi про енто нифигашеньки нет, пришлось ставить МСДН, в нём естественно есть, но что-то я ничего не понял чё дальше?


 
markers ©   (2005-02-01 14:16) [3]

GetFileAttributesEx

The GetFileAttributesEx function retrieves attributes for a specified file or directory.

BOOL GetFileAttributesEx(
 LPCTSTR lpFileName,
 GET_FILEEX_INFO_LEVELS fInfoLevelId,
 LPVOID lpFileInformation
);

Parameters
lpFileName
[in] Pointer to a null-terminated string that specifies a file or directory.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.

Windows Me/98:  This string must not exceed MAX_PATH characters.

fInfoLevelId
[in] Class of attribute information to retrieve. This parameter can be one of the following values. Value Meaning
GetFileExInfoStandard The lpFileInformation parameter is a WIN32_FILE_ATTRIBUTE_DATA structure.

lpFileInformation
[out] Pointer to a buffer that receives the attribute information. The type of attribute information stored into this buffer is determined by the value of fInfoLevelId.


 
kaZaNoVa ©   (2005-02-01 14:25) [4]

markers ©   (01.02.05 13:03)
можно попробовать, и обрабатывать ошибки)


 
markers ©   (2005-02-01 14:41) [5]

Ну должен же быть какой-то выход один? Правильный и не глупый?


 
markers ©   (2005-02-01 14:47) [6]

ГетФайлАтрибутесЕх не то!
Вот это то (Я так думаю), но разобраться тоже не могу
GetFileSecurity

The GetFileSecurity function obtains specified information about the security of a file or directory. The information obtained is constrained by the caller"s access rights and privileges.

The GetNamedSecurityInfo function provides functionality similar to GetFileSecurity for files as well as other types of objects.

Windows NT 3.51 and earlier:  The GetNamedSecurityInfo function is not supported.

BOOL GetFileSecurity(
 LPCTSTR lpFileName,
 SECURITY_INFORMATION RequestedInformation,
 PSECURITY_DESCRIPTOR pSecurityDescriptor,
 DWORD nLength,
 LPDWORD lpnLengthNeeded
);

Parameters
lpFileName
[in] Pointer to a null-terminated string that specifies the file or directory for which security information is retrieved.
RequestedInformation
[in] A SECURITY_INFORMATION value that identifies the security information being requested.
pSecurityDescriptor
[out] Pointer to a buffer that receives a copy of the security descriptor of the object specified by the lpFileName parameter. The calling process must have permission to view the specified aspects of the object"s security status. The SECURITY_DESCRIPTOR structure is returned in self-relative format.
nLength
[in] Specifies the size, in bytes, of the buffer pointed to by the pSecurityDescriptor parameter.
lpnLengthNeeded
[out] Pointer to the variable that receives the number of bytes necessary to store the complete security descriptor. If the returned number of bytes is less than or equal to nLength, the entire security descriptor is returned in the output buffer; otherwise, none of the descriptor is returned.


 
TUser ©   (2005-02-01 14:55) [7]

GetFileSecurity найдет тебе имя владельца и прочее, прочее. Если надо узнать, рид ли онли, скрытый ли и пр. - тогда GetFileAttributes(Ex).

> но разобраться тоже не могу

Можешь Сократом перевести по приколу.


 
markers ©   (2005-02-01 14:58) [8]

Не вы не поняли мне ридонли или что насрать;) Мне нужно какие права имеет ента папка (NTFS разделы содержат таковую) то, что ридонли я думаю это не то.... Именно могу я туда писать, читать удалять/создавать файлики;)


 
markers ©   (2005-02-01 15:02) [9]

То есть есть ли у меня (У проги) соответствующие прова для манипулирования своими файлами в своих папках;) Например запустил я прогу из сети, а при запуске из сети только чтение, и как мне определить это, чтоб эрроров небыло;) (У MemIni.UpdateFile нет возвращяемого значения удалось или нет, сразу сдыхает всё)


 
BiN ©   (2005-02-01 15:10) [10]

>> markers  
  >> TUser


Чтобы получения дескриптора безопасности объекта "файл" можно использовать ф-и GetFileSecurityInfo, а предпочтительнее -GetNamedSecurityInfo. Это возможно сделать только на NTFS-томах.
Дескриптор безопасности содержит следующую информацию:
1) Sid  владельца защищаемого объекта
2) Sid первичной группы объекта. Эта информация нужна только в NT и не исп-ся в 2000 и позже.
3) Discretionary Access Сontrol List (DACL) - список разграничительного контроля доступа. Его элементы как раз и нужны по сабжу.
4) System ACL - список прав для аудита доступа к объекту.

GetFileAttributes(Ex) возвращает аттрибуты файла, мало чего общего имеющие с правами доступа.


 
markers ©   (2005-02-01 16:15) [11]

Вот это родил, а дальше какие параметры задавать, не понял
GetNamedSecurityInfo("SE_FILE_OBJECT",ProgramPath+"\data",OWNER_SECURITY_INFORMATION,)


 
markers ©   (2005-02-01 16:21) [12]

Во, чё-то родил
GetNamedSecurityInfo(PChar(ProgramPath+"\data"),SE_FILE_OBJECT,OWNER_SECURITY_INFORMATION,nil,nil,nil,nil,lpWoid);
Но как мне теперь с этим работать?


 
BiN ©   (2005-02-01 16:32) [13]

markers ©   (01.02.05 16:15) [11]

Вот это родил...


Ну, например, что-то типа

var
 pDacl: PACL;
 lpSecDesc: PSecurityDescriptor;
 dwRes: DWORD;
begin
 
 dwRes:=GetNamedSecurityInfo(Pchar(AObjectName),
                         ObjectType,
                         DACL_SECURITY_INFORMATION,
                         nil,
                         nil,
                         @pDacl,
                         nil,
                         lpSecDesc);
 if dwRes<>ERROR_SUCCESS then
   raise EOSError.CreateResFmt(@SOSError, [dwRes,
     SysErrorMessage(dwRes)]);
 //...
 // Разбираем pDACL

 LocalFree(lpSecDesc);

Думаю, сперва неплохо бы матчасть почитать. Например, "Программирование серверных приложений для MS Windows 2000. Рихтер. Кларк". Очень полезно.


 
markers ©   (2005-02-01 16:41) [14]

to Bin
На тему доки это хорошо;)
Если есть где в свободной скачке скажите плиз где, но вообще я в перспективе не планирую настолько глубоко подобными вещами заниматся, просто столкнулся с такой проблемой и хочу решить её ПРАВИЛЬНО! И надеюсь на вашу помощь;)


 
BiN ©   (2005-02-01 16:58) [15]

но вообще я в перспективе не планирую настолько глубоко подобными вещами заниматся, просто столкнулся с такой проблемой и хочу решить её ПРАВИЛЬНО

Чтобы сделать все правильно, нужно как-раз-таки глубоко вникнуть в к-л. тему; Особенно, если дело касается защиты объектов. Других путей не знаю.

С уважением.


 
markers ©   (2005-02-01 17:01) [16]

Эх, извините меня ещё раз;)
Ну не силён я в мелкомягковских обозначениях;)
Можете называть меня чёником;( (Хоть мне это не совсем подходит)
но что значит:
pDacl.AclRevision;
pDacl.Sbz1;
pDacl.AclSize;
pDacl.AceCount;
pDacl.Sbz2;


 
BiN ©   (2005-02-01 17:17) [17]

markers ©   (01.02.05 17:01) [16]

но что значит:
pDacl.AclRevision;
pDacl.Sbz1;
pDacl.AclSize;
pDacl.AceCount;
pDacl.Sbz2;


Структуру ACL напрямую разбирать не рекомендуется. Т.к. не исключено, что ее содержимое измениться в новых версиях.
Для получения информации о списке контроля доступа исп. ф-я GetAclInformation. От нее и нужно плясать.



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

Форум: "Основная";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
14-1106307091
Cosinus
2005-01-21 14:31
2005.02.13
Господа, у кого есть Service Pack for Delphi6 #2?


1-1106943533
Фёдор Мегатронов
2005-01-28 23:18
2005.02.13
Формирование комманды в коммандной строке - как ?


1-1107075190
Зигмунд
2005-01-30 11:53
2005.02.13
Как закодировать строчку в URL-кодированную.


14-1106672220
Бугага
2005-01-25 19:57
2005.02.13
Биллинг


1-1106743959
otar
2005-01-26 15:52
2005.02.13
как получить тип фаила от ShellListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский