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/
|