2013-06-18 9 views
6

Mam aplikację C# .NET z około 20 zespołów podtrzymujących, które utrzymuję.W jaki sposób ZAK wie, że aplikacja będzie wymagać podwyższonych uprawnień?

Po uruchomieniu Windows wyświetla okno dialogowe kontroli konta użytkownika, które mówi: Czy chcesz zezwolić następującym programom na wprowadzanie zmian w tym komputerze.

Gdybym wyłączyć „Uruchom jako administrator” pole wyboru w oknie dialogowym właściwości pliku, pojawia się okno dialogowe z:
Nie można uruchomić [nazwa aplikacji]. Konto użytkownika „[Ja]” nie ma wystarczających uprawnień do zapisu
C: \ ProgramData [przedsiębiorstwo] [nazwa aplikacji]

Ta aplikacja spróbuje napisać do katalogu ProgramData powodującemu UAC poproś użytkownika o pozwolenie.

Skąd wiadomo, że aplikacja będzie zapisywać dane w ProgramData?
Co mogę zmienić, aby ZAK nie skarżył się?

+0

istnieje kilka SO pytania, które dotyczą tego konkretnego tematu. czy któryś z nich naprawił twój problem? O ile UAC nie narzeka - masz 2 opcje - 1. musisz kliknąć obok, lub 2. musisz wyłączyć UAC. Kontrola konta użytkownika zapewnia ochronę użytkownika (niezależnie od uciążliwości: \) – sircapsalot

+0

Czy próbowałeś/nie pisałeś 'C: \ ProgramData [Firma] [Nazwa aplikacji]'? – Dennis

+0

Aplikacja przechowuje wiele plików do ProgramData, które są udostępniane wszystkim użytkownikom. Może jest lepsze miejsce na udostępnianie danych. – Robert

Odpowiedz

3
  1. Jak UAC wiedzieć aplikacja ma zamiar napisać do ProgramData

    • ProgramData może być pod listą „chronione Directories” Podczas procesu wirtualizacji ZAK Architektury. (Źródło potrzebne) enter image description here
  2. Co mogę tak zmienić, że UAC nie narzeka?

    • opcje Para tutaj -
      1. Wydaje się, że próbujesz napisać do C:\ProgramData[Company][Product]
        Dla mnie to wygląda na problem rozdzielania ścieżka. próbujesz utworzyć [lub użyć] katalogu o nazwie C:\ProgramDataAdobePhotoshop , jeśli twoja aplikacja nie oddziela tych katalogów, wtedy zakładam, że to powoduje problem z UAC. spróbuj dodać seperatory ścieżek. C:\ProgramData\Adobe\Photoshop [jako przykład]
      2. Wyłączyć UAC? UAC ma za zadanie zapobiegać nieautoryzowanemu działaniu, a jeśli spojrzysz na powyższy schemat, jakakolwiek aplikacja, która ma podpis zapisujący do "katalogu z ograniczeniami" lub jakiejkolwiek "akcji podwyższonej", to znajdzie się pod i wywoła monit UAC. Twój użytkownik kliknie, a wszystko będzie dobrze.
      3. Użyj folderu Dane aplikacji zamiast folderu ProgramData. Ten folder wydaje się być ukryty z jakiegoś powodu.

Moja rekomendacja - Dla każdej aplikacji, która potrzebuje do historii danych - Użytkownikom Application Data zamiast folder ProgramData. Nie otrzymasz żadnych monitów UAC, jeśli korzystasz z tego katalogu.(this question mogłyby w tym pomóc)

0

Jest możliwe, że aplikacja posiada plik manifestu, takie jak ten:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="requireAdministator" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

Jeśli tak, tym requestedExecutionLevel level="requireAdministator spowoduje to, aby pokazać okno UAC.

Plik manifestu normalnie nazwać app.manifest

Powiązane problemy