Mam aplikację napisaną w Delphi 7, która nie wymaga uprawnień administratora do uruchomienia.Dlaczego moja aplikacja pozwala na zapisywanie plików w folderach Windows i System32 w systemie Vista?
Z jakiegoś powodu mogę zapisywać pliki w c: \ windows i c: \ windows \ system32 z poziomu aplikacji, nawet jeśli aplikacja nie zażądała podniesienia UAC. Zalogowałem się jako administrator z UAC włączonym i nie zmieniłem żadnego z domyślnych ustawień UAC. Pliki wyświetlają się również w Eksploratorze Windows. Nie używam opcji "Uruchom jako administrator".
Jeśli spróbuję zrobić to samo za pomocą programu WordPad w tym samym profilu, otrzymam błąd zgodnie z oczekiwaniami.
Jakieś pomysły, co się dzieje?
Aplikacja używa pamięci strukturalnej Ole do zapisywania i zawiera następujące manifesty, jeśli to pomaga.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="DelphiApplication" version="1.0.0.0" processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Edytuj: Aby było jasne, moja aplikacja domyślnie nie zapisuje niczego w tych lokalizacjach. Wybieram te lokalizacje za pomocą standardowego okna zapisywania plików.
Aktualizacja
Znalazłem się, dlaczego moja aplikacja była traktowana jako dziedzictwo mimo włączając powyższą manifestu. Okazuje się, że włączono również drugi manifest, który nie ma sekcji "informacje poufne". Usunąłem ten drugi manifest i wszystko jest już dobrze.
Dzięki za wszelką pomoc
Jestem zalogowany jako administrator. Nie użyłem opcji "Uruchom jako administrator". Zostanie zaktualizowane, aby wyjaśnić – Jamie