Moja aplikacja musi napisać do pliku w \ ProgramData, które może być chronione. Dzieje się tak tylko raz po instalacji.Czy istnieje wywołanie interfejsu API, aby monitować użytkownika o podniesienie UAC?
Czy istnieje funkcja API, która pobiera informacje ACL i monituje użytkownika, aby zezwolił aplikacji na dostęp do pliku? Innymi słowy, aplikacja poprosi system Windows o monitowanie użytkownika o potwierdzenie i autoryzację. Powinno to nastąpić interaktywnie i umożliwić aplikacji wznowienie wykonywania po uzyskaniu autoryzacji dostępu do pliku. Aplikacja działa jako użytkownik standardowy, nie wymaga uprawnień administratora.
Plik zostanie otwarty za pomocą CreateFile().
Edytuj: Istnieje subtelna różnica między zapytaniem a innymi, które zostały powiedziane jako duplikaty. Proszę o pozwolenie na dostęp do jednego konkretnego obiektu, pliku. Inni proszą o podniesienie przywilejów całego procesu. W każdym razie jestem wdzięczny za wszystkie odpowiedzi, które zawierają rozwiązanie.
Ale ... nie jest jakaś kombinacja GetNamedSecurityInfo, AllocateAndInitializeSid, SetEntriesInAcl, SetNamedSecurityInfo, etc, które pozwoliłyby mi dostęp do właśnie tego jednego pliku? Nie chcę, aby cały proces działał jako administrator. Funkcja CreateFile() odwołuje się do sprawy SECURITY_ATTRIBUTES. Wygląda na to, że mogę uzyskać obiekt SECURITY_ATTRIBUTES, przekazać go do CreateFile i presto! – Pierre
Zgodnie z dokumentacją [CreateFile() '(https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858.aspx):" * Wskaźnik do struktury SECURITY_ATTRIBUTES, która zawiera dwa oddzielne, ale pokrewne elementy danych: opcjonalny deskryptor bezpieczeństwa i wartość logiczna, która określa, czy zwracany uchwyt może być dziedziczony przez procesy podrzędne. ... ** CreateFile ignoruje element lpSecurityDescriptor podczas otwierania istniejącego pliku ** lub urządzenia, ale nadal używa członek bInheritHandle. * " –
Nie ma żadnej różnicy. To dupek wiele razy. Jeśli się nie zgadzasz, nadal nie rozumiesz ZAK. Ponownie wyborcy wyraźnie tego nie rozumieją. –