Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] Zatrzymanie/uruchomienie usługi w Windows 7

To: winnt@man.lodz.pl
Subject: Re: [WINNT] Zatrzymanie/uruchomienie usługi w Windows 7
From: "Grzegorz Niemirowski" <gnthexfiles@poczta.onet.pl>
Date: Tue, 1 Aug 2017 00:00:11 +0200
Adam <a.g@poczta.onet.pl> napisał(a):
Nie szukałem zbyt intensywnie rozwiązania, bo nie ja te komputery obsługuję. Tylko klientom zgłaszałem problem. Czy jest możliwość uruchomienia programu exe (skompilowanego przez Visual Studio) z podniesionymi uprawnieniami z poziomu zwykłego usera?

Program można skompilować jako wymagający podniesienia uprawnień korzystając z manifestu. Wówczas przy próbie uruchomienia pojawi się UAC. Z założenia exe sam sobie nie może podnieść uprawnień. Ogólnie nie powinno być na codzień potrzeby uruchamiania programów na innym koncie, co najwyżej podniesienie uprawnień na pełnego admina. Jeśli ktoś się loguje na jedno konto, żeby uruchamiać programy z innego konta, to coś jest nie tak.

Przykładowy Manifest:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
   <security>
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
       <!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
           requestedExecutionLevel node with one of the following.

       <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

Specifying requestedExecutionLevel node will disable file and registry virtualization. If you want to utilize File and Registry Virtualization for backward
           compatibility then delete the requestedExecutionLevel node.
       -->
     </requestedPrivileges>
   </security>
 </trustInfo>

Jeśli się go próbuje uruchomić przez runas /savecred, to zapisuje uprawnienia. Ale później znów drze pysk, że nie może się uruchomić z zapisanymi poświadczeniami.

Nie korzystam z runas, ale ogólnie działa poprawnie. Ewentualnie można skorzystać z PowerShella i zaszyfrowanego hasła w skrypcie:
https://social.technet.microsoft.com/wiki/contents/articles/4546.working-with-passwords-secure-strings-and-credentials-in-windows-powershell.aspx

Niestety, nie pamiętam szczegółów - sytuacja z jakiegoś listopada 2016.
Ale mogę doświadczenie powtórzyć - wiem, u którego klienta był problem, chyba, że podasz Ty (albo ktoś) jakieś inne rozwiązanie.

Po pierwsze pytanie, dlaczego ktoś uruchamia program z innego konta niż jest zalogowany. Jeśli jest to jakiś zwykły program obrabiający dane użytkownika, to powinien pracować ze zwykłego konta. Jeśli nie pracuje, jest to błąd programisty. Jeśli jest to natomiast program do administracji komputerem, to powinien być uruchamiany przez admina, a nie zwykłego użytkownika.

W każdy razie jeśli użytkownik ma nie być adminem, ale ma uruchamiać jeden program z uprawnieniami admina, to jest to problem i nie znajdziesz idealnego rozwiązania. Na Linuksie jest SUID, ale było z nim na tyle dużo problemów, że w Windows z niego zrezygnowano.

--
Grzegorz Niemirowski
http://www.grzegorz.net/

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>