Теоретически, вам просто нужно вызвать какую-то "функцию" Windows, которая может ответить на вопрос, какие права доступа у этого пользователя к этому файлу. Единственный API, который я могу найти, который предоставляет эту информацию (и используется Windows ACL Editor и его функцией эффективных разрешений , - это GetEffectiveRightsFromAcl функция.
Однако его использование требует некоторого сложного низкоуровневого программирования на языке C. Это также ненадежно, как указано в статье Microsoft KB # 262278 :
Из-за этих ограничений не следует использовать API GetEffectiveRightsFromAcl, за исключением ситуаций, когда вы можете быть уверены, что контекст таков, что любые переопределенные права или привилегии пользователя не уместны, а целевой объект не защищен путем предоставления или отказа доступ к любым псевдогруппам. Как правило, точная информация о доступе для данного пользователя и защищаемого объекта может быть получена только через функцию AccessCheck, которая требует токен доступа для входа пользователя.
Предполагая, что в вашей среде это не проблема, вы можете воспользоваться проектом, размещенным на codeproject.com, который обернул низкоуровневый код в высокоуровневый COM-объект. Проект называется UserAccessCheck , и вы можете получить к нему доступ как к любому другому COM-объекту из LotusScript:
Dim hasWriteAccess as Variant
Dim obNet as Variant
obNet = CreateObject("Pardesi.TrusteeUtil")
hasWriteAccess = obNet.CheckPermissionsOnFile("foo", "bar", "C:\\DataFiles", 0x0002)
Msgbox(hasWriteAccess)
Я сам не пробовал этого, но с этого я и начал.