Win10: wie unpin from start ohne Deinstallation
Moin.
Hat jemand schon folgendes skripten können: unpinnen einer modern app (z.B. des Stores) vom Startmenü ohne diese zu deinstallieren und ohne gleich ein komplettes Layout per GPo vorgeben zu müssen.
Hat jemand schon folgendes skripten können: unpinnen einer modern app (z.B. des Stores) vom Startmenü ohne diese zu deinstallieren und ohne gleich ein komplettes Layout per GPo vorgeben zu müssen.
Please also mark the comments that contributed to the solution of the article
Content-ID: 287348
Url: https://administrator.de/contentid/287348
Printed on: September 1, 2024 at 06:09 o'clock
5 Comments
Latest comment
Hi DWW,
ich habe mir neulich eine Methode durch Nachforschen selbst erarbeitet (wollte dazu schon einen Tipp schreiben, war aber noch nicht dazu gekommen), und zwar verwendet sie den speziellen Apps-Systemordner um an die Verknüpfungen der Modern-Apps zukommen. Das ist der folgende:
Mit diesem Ordnerpfad haben wir schon die halbe Miete, der mich zu dieser Funktion geführt hat
Benutzt wird das ganze dann so:
um also bspw. die Kalender-App zu "unpinnen"
Funktioniert hier testweise auf einem Windows 10 Enterprise hervorragend.
Hoffe das hilft dir und auch anderen, die bestimmt schon lange nach so einer Lösung suchen.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
ich habe mir neulich eine Methode durch Nachforschen selbst erarbeitet (wollte dazu schon einen Tipp schreiben, war aber noch nicht dazu gekommen), und zwar verwendet sie den speziellen Apps-Systemordner um an die Verknüpfungen der Modern-Apps zukommen. Das ist der folgende:
%windir%\explorer.exe shell:::{4234d49b-0245-4df3-b780-3893943456e1}
function UnPin-App([string]$appname){
try{
((New-Object -Com Shell.Application).NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}').Items() | ?{$_.Name -eq $appname}).Verbs() | ?{$_.Name.replace('&','') -match 'Von "Start" lösen|Unpin from Start'} | %{$_.DoIt()}
}catch{}
}
UnPin-App "Name der App"
UnPin-App "Kalender"
Hoffe das hilft dir und auch anderen, die bestimmt schon lange nach so einer Lösung suchen.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
![122990](/images/members/profile_male_48x48.png)
Zitat von @colinardo:
Hoffe das hilft dir und auch anderen, die bestimmt schon lange nach so einer Lösung suchen.
Double ThumbsUp Hoffe das hilft dir und auch anderen, die bestimmt schon lange nach so einer Lösung suchen.
Genial, genau das hat mir noch gefehlt !
Vielen Dank @colinardo
Gruß grexit
Entsprechender Tipp ist jetzt zusätzlich auch hier zu erreichen:
Powershell: Modern Apps an Windows 10 Startmenü anheften oder entfernen (Pin oder Unpin) ohne deinstallation
Powershell: Modern Apps an Windows 10 Startmenü anheften oder entfernen (Pin oder Unpin) ohne deinstallation
Hi,
noch ein Hinweis aus eigener Erfahrung, falls mal jemand auf die Idee kommen sollte, dass auch umgekehrt zu nutzen.
Wir manchen das schon länger so, allerdings unter Windows 2008 R2 als TS (also nicht mit Apps sondern mit "richtigen"
Programmen) und mit VBscript, und wir pinnen an. Wir hatten den Effekt, dass es dabei vorkam, dass manche Pins mehrfach erschienen, teilweise mit selben Name und teilweise mit "...(2)", "....(3)" usw. im Namen. Ich habe damals entsprechende Prüfungen ins Script eingebaut.
@uwe: Vielleicht kann man (Du
) das in PS "schlanker" umsetzen.
Hier der Code, falls es interessiert.
(Hinweis: Berücksichtigt bloß Deutsch, dafür aber auch Taskleiste.)
E.
noch ein Hinweis aus eigener Erfahrung, falls mal jemand auf die Idee kommen sollte, dass auch umgekehrt zu nutzen.
Wir manchen das schon länger so, allerdings unter Windows 2008 R2 als TS (also nicht mit Apps sondern mit "richtigen"
@uwe: Vielleicht kann man (Du
Hier der Code, falls es interessiert.
(Hinweis: Berücksichtigt bloß Deutsch, dafür aber auch Taskleiste.)
On Error Resume Next
Dim WshShell : Set WshShell = CreateObject("Wscript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WshNetwork : Set WshNetwork = CreateObject("Wscript.Network")
Dim AllUsersStartMenu : AllUsersStartMenu = WshShell.SpecialFolders("AllUsersStartMenu")
Dim gAppDataPath : gAppDataPath = WshShell.ExpandEnvironmentStrings("%AppData%")
'------------------------------------------------------------------------------
'Start
'das Problem mit den Mehrfach-Pins beseitigen
'1. Schritt
'alle Pins mit "(..)" im Namen unpinnen
For Each Base In Array("TaskBar","StartMenu")
BaseDir = gAppDataPath & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\" & Base
For Each File In FSO.GetFolder(BaseDir).Files
If InStr(File.Name, "(") > 0 Then
'Datei mit Klammer
If Base = "TaskBar" Then
UnPinFromTaskbar BaseDir, File.Name
ElseIf Base = "StartMenu" Then
UnPinFromStartMenu BaseDir, File.Name
End If
End If
Next
Next
'2. Schritt
'alle Dateien im Pin-Ordner, welche NICHT pinned sind, löschen
For Each Base In Array("TaskBar","StartMenu")
BaseDir = gAppDataPath & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\" & Base
For Each File In FSO.GetFolder(BaseDir).Files
If Base = "TaskBar" Then
DeleteIfNotTaskbarPinned BaseDir, File.Name
ElseIf Base = "StartMenu" Then
DeleteIfNotStartmenuPinned BaseDir, File.Name
End If
Next
Next
'jetzt die regulär gewünschten Pins organisieren
UnPinFromStartMenu AllUsersStartMenu, "zugeordnete Drucker aktualisieren.lnk"
PinToStartMenu AllUsersStartMenu, "zugeordnete Drucker aktualisieren.lnk"
UnPinFromTaskbar "C:\Windows\system32\WindowsPowerShell\v1.0", "powershell.exe"
UnPinFromTaskbar "C:\Windows\system32", "ServerManager.msc"
WScript.Quit(0)
'Ende
'==============================================================================
'=== Subroutinen ==============================================================
'==============================================================================
Sub PinToStartMenu(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "An Startmenü anheften" Then
objVerb.DoIt
End If
Next
End If
End Sub
'------------------------------------------------------------------------------
Sub PinToTaskBar(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "An Taskleiste anheften" Then
objVerb.DoIt
End If
Next
End If
End Sub
'------------------------------------------------------------------------------
Sub UnPinFromTaskbar(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If InStr(Replace(objVerb.name, "&", ""), "Taskleiste lösen") > 0 Then
objVerb.DoIt
End If
Next
End If
End Sub
'------------------------------------------------------------------------------
Sub UnPinFromStartMenu(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If InStr(Replace(objVerb.name, "&", ""), "Startmenü lösen") > 0 Then
objVerb.DoIt
ElseIf InStr(Replace(objVerb.name, "&", ""), "Liste entfernen") > 0 Then
objVerb.DoIt
End If
Next
End If
End Sub
'------------------------------------------------------------------------------
Sub DeleteIfNotStartmenuPinned(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Dim IsPinned
IsPinned = False
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If InStr(Replace(objVerb.name, "&", ""), "Startmenü lösen") > 0 Then
IsPinned = True
Exit For
End If
Next
End If
If Not IsPinned Then
CreateObject("Scripting.FileSystemObject").DeleteFile FolderPath & "\" & FileName, True
End If
End Sub
'------------------------------------------------------------------------------
Sub DeleteIfNotTaskbarPinned(FolderPath, FileName)
On Error Resume Next
Dim objShell
Dim objFolder
Dim objFolderItem
Dim colVerbs
Dim objVerb
Dim IsPinned
IsPinned = False
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FolderPath)
Set objFolderItem = objFolder.ParseName(FileName)
If Not objFolderItem Is Nothing Then
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If InStr(Replace(objVerb.name, "&", ""), "Taskleiste lösen") > 0 Then
IsPinned = True
Exit For
End If
Next
End If
If Not IsPinned Then
CreateObject("Scripting.FileSystemObject").DeleteFile FolderPath & "\" & FileName, True
End If
End Sub
'------------------------------------------------------------------------------
E.