![Полностью безопасный способ запуска веб-страницы](https://rvso.com/image/1654377/%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%20%D0%B2%D0%B5%D0%B1-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B.png)
На моем компьютере (Windows 10) есть один администратор и один стандартный пользователь.
Я запускаю Chrome в учетной записи администратора. Затем я блокирую свою учетную запись и вхожу в учетную запись обычного пользователя. Затем я запускаю cmd как администратор и получаю запрос UAC. Когда я запускаю Chrome (запустить Chrome), ничего не происходит. Я прикрепил ниже трассировку стека из --enable-logging --v=1. Я все еще могу запустить Chrome, когда запускаю cmd без повышенных привилегий как обычный пользователь.
[1044:4904:0723/141901.799:ERROR:disk_cache.cc(184)] Unable to create cache
[1044:4904:0723/141901.799:ERROR:shader_disk_cache.cc(606)] Shader Cache Creation failed: -2
[1044:10988:0723/141901.800:ERROR:process_singleton_win.cc(411)] Lock file can not be created! Error code: 32
[1044:10988:0723/141901.800:ERROR:chrome_browser_main.cc(1292)] Failed to create a ProcessSingleton for your profile directory. This means that running multiple instances would start multiple browser processes rather than opening a new window in the existing process. Aborting now to avoid profile corruption.
На высоком уровне мне нужен полностью защищенный способ запуска веб-страницы. Очевидно, что пользователи используют много браузеров, поэтому решение только для Chrome нежизнеспособно. Я запускаю свою веб-страницу из cmd с помощью starthttps://www.stackoverflow.com/. Насколько я понимаю, используется браузер по умолчанию (в моем воспроизводимом примере это Chrome)
Реальный пример использования — стандартный пользователь устанавливает какое-то программное обеспечение. Установщик программного обеспечения использует UAC для запуска с привилегиями администратора, поэтому установщик теперь работает под учетной записью администратора. Установщик запускает веб-страницу с подробной информацией о программном обеспечении. Веб-страница на самом деле не запускается, потому что администратор оставил открытым Chrome в своей учетной записи Windows. Так что это пограничный случай, который даже не применим к большинству машин с одной учетной записью Windows.
решение1
import subprocess
url = "https://stackoverflow.com/"
args = ["start", "/wait", url, "&", "exit", "/b", "%errorlevel"]
completed = subprocess.run(args, stdout=subprocess.PIPE, shell=True)
print("exit status", completed.returncode)