危险的方式

危险的方式

我一直保持桌面上没有任何快捷方式。我宁愿不采取行动来做到这一点。

答案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>&lt;QueryList&gt;&lt;Query Id="0" Path="Application"&gt;&lt;Select Path="Application"&gt;*[System[Provider[@Name='MsiInstaller'] and EventID=1042]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</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建议的“危险方式”

相关内容