Войти

Показать полную графическую версию : Изъять программЫ из панели задач


SharkyEXE
02-11-2019, 18:00
Всем здравствуйте

Операционная система: Microsoft Windows 7 Professional Service Pack 1 x64 Russian

Вот здесь перейти (https://social.technet.microsoft.com/Forums/en-US/869ba4ca-67b1-41b7-9b8d-1a6bf4f72523) скопировал код

Option Explicit

Const CSIDL_APPDATA = &H1A

Dim objShell
Dim objFolder
Dim objFolderItem
Dim objVerb
Dim objCurrentUserAppData
Dim strCurrentUserAppData
Set objShell = CreateObject("Shell.Application")
Set objCurrentUserAppData = objShell.NameSpace(CSIDL_APPDATA)
strCurrentUserAppData = objCurrentUserAppData.Self.Path



'===================''==================='
' - Remove All Pinned Items -
'===================''==================='

Set objFolder = objShell.Namespace(strCurrentUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")
For Each objFolderItem in objFolder.Items
For Each objVerb in objFolderItem.Verbs
If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt
Next
Next
и вставил его в файл Unpin all from Taskbar.vbs - прилагаю

После запуска файла все значки, которые закреплены на панели задач - не изъялись из панели задач

Пожалуйста, поправьте код, что в нем не так

Спасибо.

Iska
02-11-2019, 20:41
что в нем не так »
Например, в нём не учитывается, что локализация ОС может отличаться от английской :).

Option Explicit

Dim strUserAppData

Dim objFolder
Dim objFolderItem
Dim objVerb


With WScript.CreateObject("Shell.Application")
strUserAppData = .NameSpace("shell:AppData").self.Path

Set objFolder = .Namespace(strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")

If Not objFolder Is Nothing Then
For Each objFolderItem In objFolder.Items
For Each objVerb In objFolderItem.Verbs
WScript.Echo Replace(objVerb.Name, "&", "")

Select Case LCase(Replace(objVerb.Name, "&", ""))
Case "unpin from taskbar", "открепить от панели задач"
WScript.Echo "Unpin [" & objFolderItem.Name & "]."
objVerb.DoIt
Case Else
' Nothing to do
End Select
Next
Next

Set objFolder = Nothing
Else
WScript.Echo "Can't determine path [" & strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" & "]."
WScript.Quit 1
End If
End With

WScript.Quit 0

Но там хранятся данные (в виде ярлыков) не о всех закреплённых приложениях. Попробуйте, например, закрепить Солитер («C:\Program Files\Microsoft Games\FreeCell\FreeCell.exe») на Панели задач, а потом поискать его в указанном каталоге профиля пользователя. Сведения о его закреплении будут только в реестре — «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband».

SharkyEXE
02-11-2019, 20:43
Сведения о его закреплении будут только в реестре — «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband» »
Пожалуйста, я Вас очень прошу, если можно, сделайте, чтобы 100%но откреплялось как из "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar", так и из "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"

Iska
02-11-2019, 22:08
SharkyEXE, не сделаю, поскольку единственно известный мне легальный способ уже изложен выше.

dislike
03-11-2019, 08:13
легальный способ »
Что значит "легальный"? Остальные способы запрещены законом?

SharkyEXE
03-11-2019, 11:31
Iska »

Здравствуйте.

Эм, а считать данные из ветки "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" - если там чего-то будет (записи, дополнительные разделы внутри ветки), просто удалить записи или вообще по простому, по "тупому" (прошу прощения) - удалить ветку "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" - нет ветки, по моей идее и не будет закрепленного того же ярлыка Солитер («C:\Program Files\Microsoft Games\FreeCell\FreeCell.exe»)

Iska
03-11-2019, 11:59
Что значит "легальный"? »
Документированный и официально поддерживаемый.

Эм, а считать данные из ветки "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" - если там чего-то будет (записи, дополнительные разделы внутри ветки), просто удалить записи или вообще по простому, по "тупому" (прошу прощения) - удалить ветку "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" - нет ветки, по моей идее и не будет закрепленного того же ярлыка Солитер («C:\Program Files\Microsoft Games\FreeCell\FreeCell.exe») »
Пробуйте, на свой страх и риск.

P.S. Я вообще никогда не пользовал и не пользую закрепление приложений на Панели задач. Посему для меня это достаточно отвлечённая тема.

SharkyEXE
03-11-2019, 12:54
Пробуйте, на свой страх и риск. »

Так я не могу, не умею, пожалуйста, если Вы можете - помогите это реализовать, добавьте в Ваш скрипт удалить ветку реестра "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"

Iska
03-11-2019, 14:15
На Ваш страх и риск:
Option Explicit

Const HKEY_CURRENT_USER = &H80000001
Const strSubKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband"


Dim strUserAppData

Dim objFolder
Dim objFolderItem
Dim objVerb


With WScript.CreateObject("Shell.Application")
strUserAppData = .NameSpace("shell:AppData").self.Path

Set objFolder = .Namespace(strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")

If Not objFolder Is Nothing Then
For Each objFolderItem In objFolder.Items
For Each objVerb In objFolderItem.Verbs
WScript.Echo Replace(objVerb.Name, "&", "")

Select Case LCase(Replace(objVerb.Name, "&", ""))
Case "unpin from taskbar", "открепить от панели задач"
WScript.Echo "Unpin [" & objFolderItem.Name & "]."
objVerb.DoIt
Case Else
' Nothing to do
End Select
Next
Next

Set objFolder = Nothing
Else
WScript.Echo "Can't determine path [" & strUserAppData & "\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" & "]."
End If
End With

If WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("StdRegProv").DeleteKey(HKEY_CURRENT_USER, Split(strSubKey, "\", 2)(1)) <> 0 Then
WScript.Echo "Can't delete subkey [" & strSubKey & "]."
End If

WScript.Quit

Кроме того, полагаю, изменения в интерфейсе оболочки (в результате удаления в реестре) Вы увидите только после перезапуска оболочки (например, выход из сеанса/вход в систему).

SharkyEXE
03-11-2019, 14:38
Iska »

Здравствуйте.

Большое Вам спасибо за помощь.

PS. В моем случае, после использования скрипта, происходит перезагрузка компьютера

SharkyEXE
14-12-2019, 14:17
Iska

Здравствуйте.

Пожалуйста, можете выложить еще одну версию Вашего скрипта
http://forum.oszone.net/post-2894577-9.html

в котором после строкиOption Explicit
добавлены строки ( это на языке "командная строка" строки )
Rem Если не существует папка "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\" , то
If Not Exist "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\" (
Rem Создать папку "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\"
Md "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\"
Rem Присвоить папке "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\" атрибут "только чтение"
"%SystemDrive%\Windows\System32\Attrib.exe" +R "%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\"
)

Спаисбо.

Iska
15-12-2019, 16:14
SharkyEXE, а в чём глубинный смысл? Как может данный каталог не существовать, если там есть изначально закреплённые элементы?! И зачем присваивать каталогу атрибут «Только для чтения»?




© OSzone.net 2001-2012