Версия AutoIt: 3.2.5.4
Описание:
Здравствуйте, есть у меня такая задача: надо узнать владельца папки или файла, ну скажем, "C:\Test" на AutoIT. Как я понимаю, самое оптимальное решение - это воспользоваться функциями Windows API, благо AutoIT может их вызывать. Есть такая функция GetSecurityInfo() в Windows API - вроде именно, то что надо. Посмотрел, что можно было бы подключить из папки Include с уже готовыми функциями - такую функцию там не нашёл. Пробовал самостоятельно через DllCall() написать код, но что-то где-то я, видимо не понимаю. Если кто-нибудь поможет - будут очень благодарен.
На просторах Интернета (англоязычного) нашёл описание функции, которую можно составить:
Там только функция, насчёт применения не нашёл ничего. Правильно я понимаю, что $handle можно получить с помощью FileOpen()? $ObjectType и $SecurityInfo - я подсунул значения "SE_FILE_OBJECT" и "OWNER_SECURITY_INFORMATION" соответственно. Но что-то не работает. В идеале бы создать такую функцию, в которую я подставляю только путь к папке или файлу и она мне на выходе даёт владельца (можно без расшифровки SID и т. п.) .
Примечания:
Описание:
Здравствуйте, есть у меня такая задача: надо узнать владельца папки или файла, ну скажем, "C:\Test" на AutoIT. Как я понимаю, самое оптимальное решение - это воспользоваться функциями Windows API, благо AutoIT может их вызывать. Есть такая функция GetSecurityInfo() в Windows API - вроде именно, то что надо. Посмотрел, что можно было бы подключить из папки Include с уже готовыми функциями - такую функцию там не нашёл. Пробовал самостоятельно через DllCall() написать код, но что-то где-то я, видимо не понимаю. Если кто-нибудь поможет - будут очень благодарен.
На просторах Интернета (англоязычного) нашёл описание функции, которую можно составить:
Код:
Func GetSecurityInfo($handle, $ObjectType, $SecurityInfo, $ppsidOwner, $ppsidGroup, $ppDacl, $ppSacl, $ppSecurityDescriptor)
$call = DllCall("Advapi32.dll", "long", "GetSecurityInfo", _
"ptr", $handle, _
"int", $ObjectType, _
"dword", $SecurityInfo, _
"ptr", $ppsidOwner, _
"ptr", $ppsidGroup, _
"ptr", $ppDacl, _
"ptr", $ppSacl, _
"ptr", $ppSecurityDescriptor)
Return $call[0]
EndFunc ;==>GetSecurityInfo
Там только функция, насчёт применения не нашёл ничего. Правильно я понимаю, что $handle можно получить с помощью FileOpen()? $ObjectType и $SecurityInfo - я подсунул значения "SE_FILE_OBJECT" и "OWNER_SECURITY_INFORMATION" соответственно. Но что-то не работает. В идеале бы создать такую функцию, в которую я подставляю только путь к папке или файлу и она мне на выходе даёт владельца (можно без расшифровки SID и т. п.) .
Примечания: