回答:
すべてのプログラムがショートカットを作成できないようにすることはできないと思いますが、私はフェンスを使用しています。
デスクトップ上のアイコンをグループ化できますが、最も重要なのは、デスクトップをダブルクリックすると、フェンス内にないすべてのアイテムが非表示になることです。
私が知っている上書き設定はそれを停止しませんが、3つのオプションがあります。1つは危険、もう1つはバイパス、もう1つは安全です。
次のフォルダのセキュリティ設定を編集します(1つ上のフォルダに移動し、右クリックして、プロパティを実行します)。
c:\users\<name>\Desktop
or
%userprofile%\Desktop
and
c:\users\default\Desktop
次に、[セキュリティ]タブに移動し、[編集]をクリックします。変更と書き込みの両方に拒否プロパティを設定する必要があります。インストーラーがユーザーの下で実行される場合は、ユーザーだけのためにこれを行う必要があります。
これには、アイコンを作成できないという欠点がありますが、機能するはずです。
インストールによって生成されたアイコンを削除するだけです!
アイテムがないデスクトップ上の任意の場所を右クリックします。表示オプションを展開して[デスクトップアイコンを表示]のチェックを外します...もちろん、これにはアイコンがないという欠点がありますが、これを実現しようとしている場合は問題ありません。
これは、スケジュールされたタスクを使用する簡単な方法であり、カスタムスクリプトやプログラムを作成する必要はありません。
アイコンを削除するようにスケジュールされたタスクを設定しました。定期的に(MSIのインストールが完了してから)実行されるため、多少不完全ですが、機能します(6か月間使用した後は、非常にうまく機能します)。現在のユーザーと「パブリック」ユーザーの両方のプロファイルのデスクトップにあるリンクを直接削除しますが、これはもちろん、削除する権限があるかどうかに依存します。
タスクは次のように作成されます。
Application
MsiInstaller
1042
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>
Windowsでそれを行う方法があるかどうかはわかりませんが、このBASICコードが機能することはわかります。
Kill("C:\Users\<name>\Desktop\*.lnk")
これにより、デスクトップ上のすべてのショートカットが自動的に削除されます。
それ以外の場合は、手動で削除する以外は方法がわかりません
(とにかく数秒しかかかりません)本当にそれをしたくない
場合は、@ Williamが提案する「危険な方法」を使用します