Пришло время выложить из закромов очередной скрипт для системных администраторов. Заготовки для работы с пакетами обновлений и компонентами системы выкладывались в предыдущих статьях. Сегодня Я поделюсь готовым решением, которое можно без доработок применять в работе.
Как известно, компания Microsoft решила последовать примеру Google и открыла свой маркет приложений, под названием Магазин Windows. В дистрибутивах ОС начиная c Windows 8 появились приложения нового типа (формат файлов распространения — AppX), которые являются универсальными и должны запускаться на всех устройствах под Windows. Среди предустановленных универсальных приложений лично Я не нашел ничего полезного, поэтому и написал скрипт, который удаляет их все.
Представленное здесь решение предназначено для обслуживания образов Windows 8, 8.1, 10. Может применяться как к автономным файлам образов в формате *.wim, так и к развёрнутой (установленной) системе. Как и в предыдущих моих скриптах использую средства системы DISM.
Однако в ходе разработки выяснилось, что с помощью команды dism нет возможности удалить универсальные приложения из установленной системы (обслуживание онлайн) — только средствами PowerShell. Пришлось делать выбор: либо писать скрипт полностью на PS, либо использую возможности командного интерпретатора (CMD), осуществить вызов отдельных операций из PS. Я выбрал второй вариант, в связи с чем, представленное решение состоит из двух файлов: основного скрипта (сохранить с любым именем *.cmd) и дополнительного (сохранить с именем RemoveAppxes.ps1).
Основной скрипт
Дополнительный скрипт
Get-AppxPackage -AllUsers | Remove-AppxPackage
Использование
Два файла должны размещаться в одной папке. Если в папке запуска отсутствует файл образа — install.wim, то скрипты выполняют работу в полностью автоматическом режиме.
Если в папке запуска присутствует файл образа — install.wim, то скрипт выполняет считывание из него информацию об имеющихся «индексах» и предлагает ввести номер. После этого отображается расширенная информация о выбранном «индексе» выдаётся запрос на монтирование. Нажатие любой клавиши приводит к возврату, а нажатие клавиши [m] запускает следующую цепочку действий: монтирование образа, проверка версии ОС, удаление дистрибутивов приложений (по циклу), удаление всех ассоциаций, деинсталляция установленных приложений (при запуске онлайн), размонтирование образа, возврат в меню выбора «индекса». После чего можно выбрать другой «индекс» образа для удаления приложений. Выбор «индекса» под номером 0 запускает обслуживание онлайн.
Разбор кода
Вначале командой set происходит установка переменных. Можно изменить предполагаемое имя файла образа install.wim (например, на install.esd). Можно изменить имя папки монтирования (по-умолчанию mount) или задать путь, если папка монтирования должна находится за пределами папки запуска.
:pre_menu
Предварительное меню. Получение основной информации о wim-файле с контролем ошибок. Если отсутствует файл образа, то запуск в режиме Online.
:ind_menu
Индексное меню. Получение расширенной информации о выбранном «индексе» в wim-файле с контролем ошибок. Предложение смонтировать «индекс».
:version
Проверка версии целевой системы. Если оказывается, что скрипт пытаются применить к образу Windows 7, то происходит размонтирование. Иначе, выполняется переход к следующей метке.
:remove (:filter, :action)
Основной блок выполнения скрипта. Вначале запрашивается список интегрированных универсальных приложений с сохранением во временный файл appxes.txt. Затем в цикле for из полученного списка последовательно выбираются строки и передаются в псевдофункцию :filter.
Строки фильтруются поиском по регулярному выражению «Microsoft.*» — если найдена, то передаются в следующую псевдофункцию :action. Здесь по регулярному выражению «Microsoft.*_» отфильтровываются названия универсальных приложений, передаваемые в дальнейшем утилите dism для удаления. Чтобы лучше понять логику работы нужно взглянуть на содержимое файла appxes.txt. Так как файл удаляется по завершению работы цикла, то чтобы с ним ознакомиться нужно предварительно вручную его получить и сохранить.
Одной командой происходит удаление всех ассоциаций открытия отдельных файлов универсальными приложениями. Для распространённых типов файлов остаются ассоциации со стандартными классическими приложениями Windows.
Удаление (деинсталляция) универсальных приложений на установленной системе происходит вызовом составной команды на языке скриптов PowerShell. Файл дополнительного скрипта RemoveAppxes.ps1 вначале выполняет запрос списка всех универсальных приложений для всех пользователей, а затем «по конвейеру» передаёт их команде на удаление.
Вроде бы ничего сложного, однако, чтобы выполнить эту операцию скрипт PS должен быть запущен с повышенными правами, причём работать от имени Администратора не достаточно. Для успешного запуска нужно вставить тот сложный код в команде powershell чтобы получить повышение прав. Защита которая легко обходится! Вот за этот «идиотизм» мне и не приглянулся PowerShell.
:mount
Монтирование образа. Предварительно создаётся папка монтирования. Контроль ошибок. Изменяется переменная определяющая спецификацию образа, теперь указывает на путь к автономному образу.
:unmount
Размонтирование образа. Если выполнялось интерактивное обслуживание (/Online), то размонтировать не нужно. Возвращение переменных к исходным значениям.
Заключение
Я показал простой и быстрый способ удаления приложений Магазина Windows. Считаю, что одно и тоже приложение не может быть одинаково удобным для использования на мобильном устройстве и на ПК. Прежде всего у названных платформ разное функциональное назначение, а значит и требуемые пользователям приложения должные предоставлять разный функционал. После отработки скрипта несколько универсальных приложений всё же остаются, прежде всего это сам Магазин Windows, с помощью которого можно установить то, что было удалено или что-то ещё.
Источник: habr.com
Babochkinbox
Архитектура решения определялась тем, что некоторые клиентские машины сидят в защищённой сети, что делает невозможным сбор логов с сервера, поэтому нужно сделать задачу на клиентских машинах.
Реализация
Сделана политика «Сбор логов» и одноимённая группа, куда добавлены пользователи и компьютеры, на которых установлена программа Some Platform. В политике создано задание для планировщика, привязанное к пользователю и запускающее программу nircmd.exe в папке NETLOGON, которая, в свою очередь, в невидимом режиме запускает скрипт, где robocopy сливает папку с логами на сервер, называя её в соответствии с логином пользователя.
Для того, чтобы этот велосипед работал, должна быть включена политика Loopback Detection в режиме Merge (в русской винде «Конфигурация компьютера/Шаблоны администрирования/Система/Групповая политика/Настройка режима обработки замыкания пользовательской групповой политики», режим слияния). Также, в задаче сделана проверка наличия папки Some Platform (нацеливание на элемент в свойствах задачи); если её нет, значит, задача работать не будет.
Строка запуска скрипта:
\domain.runetlogonnircmd.exe exec hide \domain.runetlogonsomeplatform-logs-sync.cmd
Сам скрипт (ключи после /MIR, полагаю, не нужны, но не стал убирать):
SET destination =»\serverusers-logs» robocopy «%userprofile%Some PlatformSP7Clientlogs» «%destination%%username%» /MIR /ns /nc /nfl /ndl /np /njh /njs
Вариант на Powershell, брошен в связи с тем, что скрыть выполнение скриптов от пользователя без привлечения дополнительных программ всё равно не вышло:
%SystemRoot%system32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -file «\domain.runetlogonsomeplatform-logs-sync.ps1»
$destination = «\serverusers-logs» New-Item -Path $destination$env:username -type directory robocopy «$env:userprofileSome PlatformSP7Clientlogs» «$destination$env:username» /MIR /ns /nc /nfl /ndl /np /njh /njs
Полная резервная копия одной папки в другую с меткой времени
SET source=%userprofile%sourcefolder SET destination=%userprofile%destinationfolder REM Выведет ГГГГ-ММ-ДД_чч-мм-сс SET mark=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%-%time:~6,2% SET backupfolder=%destination%backup_%mark% robocopy %source% %backupfolder% /MIR
Синхронизация папок с сетевого хранилища на USB-диск + ведение лога
$letter = E: $address = «192.168.1.5» $mark = get-date -UFormat «%Y-%m-%d_%H-%M-%S» ROBOCOPY \$addressDistr $letterDistr /MIR /XO /TEE /NP /LOG:sync_syn2usb_$mark.txt ROBOCOPY \$addressDoc $letterDoc /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \$addressEnglish $letterEnglish /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \$addressmusic $lettermusic /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \$addressphoto $letterphoto /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt # Без папки xynoreport ROBOCOPY \$addressUpload $letterUpload /XD synoreport /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt ROBOCOPY \$addressvideo $lettervideo /MIR /XO /TEE /NP /LOG+:sync_syn2usb_$mark.txt
Проверка контрольных сумм
rem Сгенерировать fciv.exe -add G:demofiles -wp -sha1 -xml G:hashdb.xml rem Проверить fciv.exe -v -sha1 -xml G:hashdb.xml rem Compute hashes: fciv.exe c:mydirmyfile.dll fciv.exe c: -r -exc exceptions.txt -sha1 -xml dbsha.xml fciv.exe c:mydir -type *.exe fciv.exe c:mydir -wp -both -xml db.xml rem List hashes stored in database: fciv.exe -list -sha1 -xml db.xml rem Verifications: fciv.exe -v -sha1 -xml db.xml fciv.exe -v -bp c:mydir -sha1 -xml db.xml
$usb = «E:» $nas = «\192.168.1.3» $mark = get-date -UFormat «%Y-%m-%d %H-%M-%S» Get-ChildItem $usb -Recurse | get-filehash -Algorithm md5 | Export-Csv -NoTypeInformation -Delimiter ‘;’ -Encoding UTF8 «$env:userprofileDesktop$mark-usb.csv» Get-ChildItem $nas -Recurse | get-filehash -Algorithm md5 | Export-Csv -NoTypeInformation -Delimiter ‘;’ -Encoding UTF8 «$env:userprofileDesktop$mark-nas.csv» $usbrep = Import-Csv «$env:userprofileDesktop$mark-usb.csv» -Delimiter ‘;’ $nasrep = Import-Csv «$env:userprofileDesktop$mark-nas.csv» -Delimiter ‘;’ Compare-Object -ReferenceObject $usbrep -DifferenceObject $nasrep -Property Hash # Если на экране будут какие-то хэши, значит, есть различия. pause
Подсчёт контрольных сумм долгий процесс, так что можно заменить проверку на размеры файлов, что гораздо быстрее.
$usb = «E:» $nas = «\192.168.1.3» $mark = get-date -UFormat «%Y-%m-%d %H-%M-%S» Get-ChildItem $usb -Recurse -File | select Directory,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime,Attributes,IsReadOnly | Export-Csv -NoTypeInformation -Delimiter ‘;’ -Encoding UTF8 «$env:userprofileDesktop$mark-usb.csv» Get-ChildItem $nas -Recurse -File | select Directory,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime,Attributes,IsReadOnly | Export-Csv -NoTypeInformation -Delimiter ‘;’ -Encoding UTF8 «$env:userprofileDesktop$mark-nas.csv» $usbrep = Import-Csv «$env:userprofileDesktop$mark-usb.csv» -Delimiter ‘;’ $nasrep = Import-Csv «$env:userprofileDesktop$mark-nas.csv» -Delimiter ‘;’ Compare-Object -ReferenceObject $usbrep -DifferenceObject $nasrep -Property Length | fl # Если на экране будут какие-то значения, значит, есть различия. pause
Учётные записи
Создать пользователя и поместить его в группу администраторов
Источник: babochkinbox.wordpress.com
Как удаленно удалить программу на компьютере в домене
Иногда удаленному выполнению команд может препятствовать антивирус или встроенный брандмауэр, в зависимости от настроек безопасности вашей сети. При необходимости отключаем их.
Отключить антивирус удаленно на примере KAV
psexec ComputerName «C:Program Files (x86)Kaspersky LabKaspersky Endpoint Security 10 for Windows SP2avp.com» exit / login = KLAdmin / password =
Отключение встроенного брандмауэра для всех профилей (только локально)
powershell — command «Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False»
Для удаленного отключения брандмауэра должен быть доступен Сервер RPC. Доступ к которому блокирует включенный брандмауэр Такая рекурсия.
Поэтому, как всегда, пойдем обходным путем:
psexec CompName netsh — c advfirewall set allprofiles state off
Команда на включение брандмауэра, соответственно, будет state on
Удаление программы
wmic / node : CompName process where «ExecutablePath like ‘%7-zip%'» get Description / format : list wmic / node : CompName process where «ExecutablePath like ‘%7-zip%'» delete wmic / node : CompName product where «name like ‘%7-zip%'» list brief wmic / node : CompName product where «name like ‘%7-zip%'» call uninstall / nointeractive
Установка программы
Тихая установка с предварительным копированием программы на удаленный хост
copy «C:Distr7z1900-x64.msi» «\CompNameC$Share7z1900-x64.msi» psexec CompName cmd / c «msiexec.exe /i C:7z1900-x64.msi /quiet /norestart»
Установка с сетевого ресурса
psexec CompName — s cmd / c «msiexec /i \CompNameShare7z1900-x64.msi /quiet /norestart»
Получить список программ
Получать список установленных в системе программ лучше из реестра, нежели средствами WMI. Этот метод работает намного быстрее, чем при использовании
Get-WmiObject -Class Win32_Product
Для удаления и установки ПО на удаленных компьютерах существует множество различных решений и программных средств. В этой статье мы рассмотрим решение данного вопроса на основе встроенных средств windows.
Удалять программы на удаленных машинах нам поможет Windows Management Instrumentation или проще говоря WMI. В переводе на русский это инструментарий управления Windows.
Как запустить wmi
Запуск wmi выполняется из командной строки. Открыть командную строку можно из «Пуск -> Все программы -> Стандартные -> Командная строка» , либо просто нажимаете клавиши «WIN + R» , откроется окно «Выполнить» в котором в поле «открыть» набираете «cmd» и нажимаете «OK» .
В открывшемся окне командной строки набираем команду wmic и нажимаем «Enter» :
Таким образом мы запустили консольную утилиту для взаимодействия со структурой WMI на локальном или удаленном компьютере. Теперь с помощью язык запросов WMI Query Language (WQL) можно выполнять различные команды WMI.
Для примера получим весь список установленного ПО на удаленном компьютере. Для этого выполняем следующий запрос:
/node: product get name
Где вместо подставляем имя удаленной и локальной машины, с которой необходимо получить список установленных программ. Имя компьютера лучше заключить в кавычки. Жмем «Enter» , ждем некоторое время на сбор информации и получаем примерно следующую картину:
Как удалить программу с помощью WMI?
Удалить программу можно с помощью следующего запроса:
Где вместо вставляем имя компьютера с которого будет удаляться программа, а вместо имя удаляемой программы как в полученном списке ПО.
Например, нам необходимо удалить «Microsoft Office Professional Plus 2010». Тогда запрос будет выглядеть примерно так:
/node: product where name=»Microsoft Office Professional Plus 2010″ call uninstall
Нажимаем «Enter» и на запрос предложения удаления программы отвечаем Y:
wmic:rootcli>/node:»tep-ws000010″ product where name=»Microsoft Office Professional Plus 2010″ call uninstall
Execute (\TEP-WS000010ROOTCIMV2:Win32_Product.IdentifyingNumber=»»,Name=»Microsoft Office Professional Plus 2010″,Version=»14.0.4763.1000″) ->Uninstall () (Y/N/?)? Y
Method execution successful.
Out Parameters:
instance of __PARAMETERS
ReturnValue = 0;
>;
Чтобы удаленно деинсталлировать программы или обновления программного обеспечения, выполните следующие действия:
- В главном окне программы перейдите к закладке Устройства → Задачи .
- Нажмите на кнопку Добавить .
Запустится мастер создания задачи. Для продолжения работы мастера нажмите на кнопку Далее . Имя задачи не может превышать 100 символов и не может содержать специальные символы («*<>?:|). Отображается список программ «Лаборатории Касперского». Выберите программы, которую вы хотите деинсталлировать. Отобразится список программ, несовместимых с программами безопасности «Лаборатории Касперского» или с Kaspersky Security Center. Установите флажки напротив программ, которые требуется удалить. По умолчанию Агенты администрирования отправляют на Сервер администрирования информацию о программах, установленных на управляемых устройствах. Список установленных программ хранится в реестре программ. Чтобы выбрать программу из реестра программ, выполните следующие действия:
- Нажмите на поле Программа для деинсталляции и выберите программу, которую вы хотите деинсталлировать.
- Укажите параметры деинсталляции:
- Способ удаления
Выберите, как вы хотите деинсталлировать программу:
-
Автоматически определять команду удаления
Если у программы есть команда деинсталляции, заданная поставщиком программы, Kaspersky Security Center использует эту команду. Рекомендуется выбрать этот вариант. Выберите этот вариант, если вы хотите указать свою команду для деинсталляции программы. Рекомендуется сначала попробовать деинсталлировать программу с помощью параметра Автоматически определять команду удаления . Если деинсталляция с помощью автоматически определенной команды не удалась, используйте свою команду. Введите команду установки в это поле и укажите следующий параметр: Kaspersky Security Center проверяет, есть ли у выбранной программы команда деинсталляции, заданная поставщиком программы. Если команда найдена, Kaspersky Security Center будет использовать ее вместо команды, указанной в поле Команда для удаления программы . Рекомендуется включать этот параметр. Если после деинсталляции программы требуется перезагрузка операционной системы на управляемом устройстве, операционная система перезагружается автоматически. Отображается список обновлений, патчей и программ сторонних производителей. Выберите объект, который вы хотите деинсталлировать. Отображаемый список представляет собой общий список программ и обновлений, и он не соответствует программам и обновлениям, установленным на управляемых устройствах. Перед выбором объекта рекомендуется убедиться, что программа или обновление установлено на устройствах, определенных в области действия задачи. В окне свойств можно просмотреть список устройств, на которых установлена программа или обновление. Чтобы просмотреть список устройств, выполните следующие действия:
-
Нажмите на имя программы или обновления.
Откроется окно свойств. Вы также можете просмотреть список установленных программ и обновлений в окне свойств устройства. Файлы доставляются на клиентские устройства Агентом администрирования, установленным на этих клиентских устройствах. Если этот параметр выключен, файлы доставляются с помощью инструментов Microsoft Windows. Рекомендуется включить этот параметр, если задача назначена для устройств с установленными Агентами администрирования. Файлы передаются на клиентские устройства с использованием средств Microsoft Windows с помощью Сервера администрирования. Этот параметр можно включить, если на клиентском устройстве не установлен Агент администрирования, но клиентское устройство находится в той же сети, что и Сервер администрирования. Файлы передаются на клиентские устройства с использованием инструментов операционной системы с помощью точек распространения. Этот параметр можно включить, если в сети есть хотя бы одна точка распространения. Если параметр C помощью Агента администрирования включен, файлы будут доставлены средствами операционной системы только в случае невозможности использования средств Агента администрирования. Максимально допустимое количество клиентских устройств, на которые Сервер администрирования может одновременно передавать файлы. Чем больше это число, тем быстрее будет деинсталлирована программа, но нагрузка на Сервер администрирования увеличивается. Если при запуске задачи Удаленная деинсталляция программы не удается деинсталлировать программу с управляемого устройства за указанное в параметрах количество запусков установок, Kaspersky Security Center прекращает доставку утилиты деинсталляции на это управляемое устройство и больше не запускает установщик на устройстве. Повторяющиеся попытки запуска задачи могут указывать на проблему на устройстве, которая препятствует деинсталляции. Администратор должен решить проблему за указанное количество попыток деинсталляции и перезапустить задачу (вручную или по расписанию). Если удаление не выполнено, проблема будет считаться неразрешимой и любые дальнейшие запуски считаются дорогостоящими с точки зрения нежелательного расхода ресурсов и трафика. После создания задачи, количество попыток установки равно 0 . Каждый запуск установки, который возвращает ошибку на устройстве, увеличивает показания счетчика. Если количество попыток деинсталляции, указанное в параметрах задачи, было превышено и устройство готово к деинсталляции программы, вы можете увеличить значение параметра Количество попыток деинсталляции и запустить задачу деинсталляции программы. Также вы можете создать другую задачу Удаленная деинсталляция программы. Перед передачей файлов на клиентские устройства Kaspersky Security Center проверяет, применимы ли параметры утилиты удаления к операционной системе клиентского устройства. Если параметры не применимы, Kaspersky Security Center не передает файлы и не пытается деинсталлировать программу. Например, чтобы деинсталлировать программы Windows с устройств группы администрирования, в которую входят устройства с различными операционными системами, вы можете назначить задачу деинсталляции группе администрирования, а затем включить этот параметр, чтобы пропускать устройства с операционной системой, отличной от Windows. Клиентские устройства не будут автоматически перезагружаться после выполнения операции. Для завершения операции потребуется перезагрузить устройство (например, вручную или с помощью задачи управления устройствами). Информация о необходимости перезагрузки сохранена в результатах выполнения задачи и в статусе устройства. Этот вариант подходит для задач на серверах и других устройствах, для которых критически важна бесперебойная работа. В этом случае перезагрузка всегда выполняется автоматически, если перезагрузка требуется для завершения операции. Этот вариант подходит для задач на устройствах, для которых допустимы периодические перерывы в работе (выключение, перезагрузка). По умолчанию выбран этот вариант. Если выбран этот вариант, программа с определенной частотой предлагает пользователю выполнить перезагрузку операционной системы. По умолчанию параметр включен. По умолчанию интервал составляет 5 минут. Допустимые значения: от 1 до 1440 минут. Если параметр выключен, предложение перезагрузки отображается только один раз. После предложения пользователю перезагрузить операционную систему, программа выполняет принудительную перезагрузку по истечении указанного времени. По умолчанию параметр включен. По умолчанию интервал времени составляет 30 минут. Допустимые значения: от 1 до 1440 минут. Запущенные программы могут не позволить перезагрузить клиентское устройство. Например, если выполняется работа с документом в текстовом редакторе и изменения не сохранены, программа не позволяет перезагрузить устройство. Если этот параметр включен, такие программы на заблокированных устройствах принудительно закрываются перед перезагрузкой устройства. В результате пользователи могут потерять несохраненную работу. Если этот параметр выключен, заблокированное устройство не перезагружается. Состояние задачи на этом устройстве указывает на необходимость перезапуска устройства. Пользователям необходимо вручную закрыть все программы, которые запущены на заблокированных устройствах, и перезагрузить эти устройства. По умолчанию параметр выключен. Если выбран этот вариант, не требуется указывать учетную запись, от имени которой будет запускаться инсталлятор программы. Задача запускается под учетной записью, под которой работает служба Сервера администрирования. Если Агент администрирования не установлен на клиентских устройствах, вариант недоступен. Если выбран этот вариант, можно указать учетную запись, от имени которой будет запускаться инсталлятор программы. Учетную запись можно указать, в случае если Агент администрирования не установлен на устройствах, для которых назначена задача. Вы можете указать несколько учетных записей, если ни одна из них не обладает необходимыми правами на всех устройствах, для которых назначена задача. В этом случае для запуска задачи используются последовательно, сверху вниз, все добавленные учетные записи. Если ни одна учетная запись не добавлена, задача запускается под той учетной записью, под которой работает служба Сервера администрирования. Задача будет создана и отобразится в списке задач. В результате выполнения задачи удаленной деинсталляции выбранная программа будет удалена с выбранных устройств.
Существует несколько способов деинсталляции программ на удаленных компьютерах. Одним из наиболее удобных и простых является использование специального софта, который, с разрешения владельца, позволяет выполнять в системе различные действия. Есть и системные аналоги таких программ – RDP-клиенты, встроенные в Windows.
Способ 1: Программы для удаленного администрирования
- Вызываем апплет «Программы и компоненты» командой, введенной в строку «Выполнить» (Win+R).
Данный прием работает на всех версиях Windows.
Способ 2: Системные средства
Под системными средствами мы подразумеваем встроенную в Windows функцию «Подключение к удаленному рабочему столу». Администрирование здесь выполняется с использованием RDP-клиента. По аналогии с TeamViewer работа ведется в отдельном окне, в котором отображается рабочий стол удаленного компьютера.
Деинсталляция программ производится точно так же, как и в первом случае, то есть либо вручную, либо с помощью софта, установленного на управляемом ПК.
Как видите, удалить программу с удаленного компьютера довольно несложно. Здесь главное помнить о том, что владелец системы, на которой мы планируем совершить те или иные действия, должен дать на это свое согласие. В противном случае есть риск попасть в весьма неприятную ситуацию, вплоть до лишения свободы.