Я держу свой рабочий стол полностью свободным от ярлыков. Я бы предпочел не предпринимать никаких действий, чтобы сделать это.
6 ответов
Вот простой способ использования запланированных задач, и вам не нужно писать собственные скрипты или программы.
Я установил запланированное задание для удаления значков. Это несколько несовершенно, так как он запускается периодически (и после завершения установки MSI), но работает (и после 6 месяцев использования: он работает довольно хорошо). Он удаляет ссылки непосредственно на рабочем столе как текущего пользователя, так и профиля "Общедоступного" пользователя, хотя это, конечно, зависит от наличия разрешения на это.
Задача создается следующим образом:
- Имя: Удалить ярлыки на рабочем столе
- Запуск с высшими привилегиями
- Триггеры:
- На мероприятии:
- Журнал:
Application
- Источник:
MsiInstaller
- Код события:
1042
- Журнал:
- Ежедневно: 5 утра каждый день
- На мероприятии:
- Действие: запустить программу
- Программа / скрипт:
cmd
- Аргументы:
/c for %f in (%userprofile%\Desktop\*.lnk %userprofile%\..\Public\Desktop\*.lnk) do del "%f"
- Программа / скрипт:
- Условия: нет
Вот задача, которую вы можете сохранить в виде XML-файла и затем импортировать в планировщик задач Windows:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2012-11-02T00:46:01.691625</Date>
<Author>Gregmac</Author>
</RegistrationInfo>
<Triggers>
<EventTrigger>
<Enabled>true</Enabled>
<Subscription><QueryList><Query Id="0" Path="Application"><Select Path="Application">*[System[Provider[@Name='MsiInstaller'] and EventID=1042]]</Select></Query></QueryList></Subscription>
</EventTrigger>
<CalendarTrigger>
<StartBoundary>2012-11-02T05:00:00</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay>
</CalendarTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>Greg</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>cmd</Command>
<Arguments>/c for %f in (%userprofile%\Desktop\*.lnk %userprofile%\..\Public\Desktop\*.lnk) do del "%f"</Arguments>
</Exec>
</Actions>
</Task>
Я знаю, что нет перезаписывающего параметра, который останавливает его, однако у вас есть три варианта: один опасный, один обходной и один безопасный!
Опасный путь
Измените настройки безопасности в следующих папках: (Перейдите на одну папку вверх, щелкните ее правой кнопкой мыши и выполните настройки)
c:\users\<name>\Desktop
or
%userprofile%\Desktop
and
c:\users\default\Desktop
Далее перейдите на вкладку «Безопасность» и нажмите «Изменить». Вы хотите поместить свойство Deny как в Modify, так и в Write. Вы должны сделать это только для вашего пользователя, если установщик работает под вашим пользователем.
Это имеет недостаток, что вы не можете создавать иконки, но это должно работать.
Безопасный путь
Просто удалите любой значок, созданный при установке!
Обходной путь
Щелкните правой кнопкой мыши в любом месте на рабочем столе, где нет элементов. Разверните опцию просмотра и снимите флажок "Показать значки рабочего стола" ... Это, конечно, имеет недостаток, что у вас не будет никаких значков - но если это то, что вы пытаетесь достичь, это не имеет значения!
Я не думаю, что вы можете отключить все программы от создания ярлыков, но я использую Заборы.
Он позволяет группировать значки на рабочем столе, но самое главное, что при двойном щелчке на рабочем столе он скрывает все элементы, которых нет в заборах.
Я не знаю, есть ли способ сделать это в Windows, но я знаю, что этот основной код будет работать:
Kill("C:\Users\<name>\Desktop\*.lnk")
Это автоматически удаляет все ярлыки на рабочем столе.
В противном случае, я не знаю, кроме как вручную удалить их
(это займет всего несколько секунд)
Если бы я действительно не хотел этого делать, я бы использовал "Опасный путь", который предлагает @William
Я понимаю, что этому вопросу уже почти 7 лет, но так как он появился в веб-поиске, я подумал, что добавлю к нему.
Если операционной системой является Windows Server, вы можете использовать Диспетчер ресурсов файлового сервера для создания определенных файловых экранов для определенных мест.
Измените разрешения для папки "Рабочий стол", чтобы запретить кому-либо, в том числе вам (и программам, запущенным вами, например, установщикам), запись на рабочий стол. Изначально в Вопросе упоминалось, что ярлыки полностью свободны, поэтому корзина и Мой компьютер также должны быть скрыты.