Answers:
我知道没有覆盖设置可以阻止它,但是您有三种选择-一种危险,一种绕过,一种安全!
在以下文件夹上编辑安全设置:(上移一个文件夹,右键单击它,然后执行属性)
c:\users\<name>\Desktop
or
%userprofile%\Desktop
and
c:\users\default\Desktop
接下来,转到“安全性”选项卡,然后单击“编辑”。您希望将Deny属性同时放在Modify和Write上。如果安装程序在您的用户下运行,则应仅对您的用户执行此操作。
缺点是您无法创建图标,但是应该可以使用。
只需删除安装生成的任何图标!
右键单击桌面上没有项目的任何地方。展开视图选项并取消选中“显示桌面图标” ...当然,这样做的缺点是您将没有任何图标-但是,如果这是您要实现的目标,那就没关系了!
这是使用计划任务的一种简单方法,无需编写自定义脚本或程序。
我设置了计划任务以删除图标。它有些不完美,因为它会定期运行(并在MSI安装完成后运行),但可以正常工作(使用6个月后:效果很好)。它会直接在当前用户和“公共”用户的个人资料的桌面上删除链接,尽管这当然取决于获得许可的权限。
任务创建如下:
Application
MsiInstaller
1042
cmd
/c for %f in (%userprofile%\Desktop\*.lnk %userprofile%\..\Public\Desktop\*.lnk) do del "%f"
这是任务,您可以将其另存为.xml文件,然后导入Windows Task Scheduler:
<?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>
我不知道Windows是否有办法做到这一点,但我知道此BASIC代码将起作用:
Kill("C:\Users\<name>\Desktop\*.lnk")
这会自动删除桌面上的所有快捷方式。
否则,除了手动删除它们外,我一无所知(
反正只需要几秒钟)
如果我真的不想这样做,我会使用@William建议的“危险方式”