Мое приложение должно записывать файл в \ ProgramData, который можно защитить. Это происходит только один раз после установки.Есть ли вызов API для запроса пользователя для повышения UAC?
Есть ли функция API, которая принимает информацию ACL и запрашивает у пользователя авторизацию приложения для доступа к файлу? Другими словами, приложение предложит Windows запросить у пользователя подтверждение и авторизацию. Это должно произойти в интерактивном режиме и разрешить приложению возобновить выполнение после авторизации доступа к файлу. Приложение работает как стандартный пользователь, не требует прав администратора.
Файл открывается с помощью CreateFile().
Редактировать: Есть тонкая разница между моим запросом и другими словами, которые дублируются. Я прошу разрешения на доступ к одному конкретному объекту, файлу. Другие просят возвысить привилегии всего процесса. Во всяком случае, я благодарен за все ответы, которые включают решение.
Но ... не некоторая комбинация GetNamedSecurityInfo, AllocateAndInitializeSid, SetEntriesInAcl, SetNamedSecurityInfo и т.д., что позволило бы мне доступ только этот один файл? Я не хочу, чтобы весь процесс запускался как Admin. CreateFile() ссылается на вещь SECURITY_ATTRIBUTES. Кажется, что я мог бы получить объект SECURITY_ATTRIBUTES, передать его CreateFile и presto! – Pierre
В документации '' CreateFile() '(https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858.aspx):" * Указатель на структуру SECURITY_ATTRIBUTES, которая содержит два отдельных, но связанных с данными: необязательный дескриптор безопасности и логическое значение, определяющее, может ли возвращенный дескриптор наследоваться дочерними процессами ... ** CreateFile игнорирует член lpSecurityDescriptor при открытии существующего файла ** или устройства, но продолжает использовать член bInheritHandle. * « –
Нет никакой разницы. Это обман много раз. Если вы не согласны, вы все равно не понимаете ОАК. Повторное открытие избирателей явно не понимает этого. –