Форум: "Основная";
Текущий архив: 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.039 c