我一直保持桌面上没有任何快捷方式。我宁愿不采取行动来做到这一点。
答案1
我不认为你可以禁止所有程序创建快捷方式,但我使用栅栏。
它允许您对桌面上的图标进行分组,但最重要的是,当您双击桌面时,它会隐藏不在围栏中的所有项目。
答案2
据我所知,没有覆盖设置可以阻止它,但是你有三个选项 - 一个是危险的,一个是绕过的,一个是安全的!
危险的方式
编辑以下文件夹的安全设置:(转到上一个文件夹,右键单击它,然后执行属性)
c:\users\<name>\Desktop
or
%userprofile%\Desktop
and
c:\users\default\Desktop
接下来,转到“安全”选项卡并单击“编辑”。您需要将“修改”和“写入”属性设置为“拒绝”。如果安装程序在您的用户下运行,则应该只为您的用户执行此操作。
这样做的缺点是您无法创建图标,但它应该可以工作。
安全的方式
只需删除安装生成的任何图标!
绕行方式
右键单击桌面上没有项目的任意位置。展开视图选项并取消勾选“显示桌面图标”... 当然,这样做的缺点是您将没有任何图标 - 但如果这是您想要实现的,那就没关系了!
答案3
这是一个使用计划任务的简单方法,无需编写自定义脚本或程序。
我设置了一个计划任务来删除图标。它有些不完善,因为它会定期运行(并且在 MSI 安装完成后运行),但它可以正常工作(使用 6 个月后:它工作得很好)。它直接在当前用户和“公共”用户的个人资料的桌面上删除链接,但这当然取决于是否具有这样做的权限。
任务创建如下:
- 名称:删除桌面快捷方式
- 以最高权限运行
- 触发器:
- 在活动中:
- 日志:
Application
- 来源:
MsiInstaller
- 事件 ID:
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>
答案4
我不知道是否有办法在 Windows 中执行此操作,但我知道这个 BASIC 代码可以起作用:
Kill("C:\Users\<name>\Desktop\*.lnk")
这会自动删除桌面上的所有快捷方式。
否则,我不知道除了手动删除它们之外还有什么办法
(反正只需要几秒钟)
如果我真的不想这样做,我会使用@William建议的“危险方式”