Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.12.2021
Сообщений: 70
1

Проблема с удалением файла и ветки реестра

25.07.2022, 14:00. Показов 875. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Нужно удалить файл по пути "%appdata%\lsvclic.dat" и ветку реестра "HKEY_CURRENT_USER\Software\7-Zip"

Получился такой код:

Visual Basic
1
2
3
4
WScript.CreateObject("WScript.Shell").RegDelete "HKEY_CURRENT_USER\Software\7-Zip\"
Set objShell = CreateObject("WScript.Shell")
objShell.ExpandEnvironmentStrings("%APPDATA%")
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "%appdata%\lsvclic.dat"
Ошибки:
"Не удаётся удалить раздел реестра"
"Файл не найден"

В реестре если подразделов нет, то раздел удаляется, но т.к. в "7-Zip" они есть - появляется ошибка.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2022, 14:00
Ответы с готовыми решениями:

Проблема с удалением файла
Всем привет. Имеется две моих программы (два exe файла). Первая программа(1.exe) запускает...

Проблема с удалением файла
Set Fs=Server.CreateObject("Scripting.FileSystemObject") Fs.DeleteFile...

Мониторинг ветки реестра
Есть ветка HKEY_LOCAL_MACHINE\SOFTWARE\Task_Queue\Parameters\Task_Execution_Duration Что нужно...

Удаление ветки реестра
Хочу сделать некое подобие твикера для винды, реализовываю твик убирающий папки из проводника, для...

Неприступные ветки реестра
Обнаружил ветки реестра, доступ к которым жестко закрыт, и изменить владельца и разрешения никак...

4
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
25.07.2022, 18:10 2
Лучший ответ Сообщение было отмечено Mikston как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit: Dim File, oReg, oCol, Key, sKeys, sKey
File = CreateObject("WScript.Shell").SpecialFolders(5) & "\lsvclic.dat"
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
Set oCol = CreateObject("System.Collections.ArrayList")
Recursion "Software\7-Zip"
oCol.Sort: oCol.Reverse
For Each Key in oCol: oReg.DeleteKey &H80000001, Key: Next
With CreateObject("Scripting.FileSystemObject")
   If .FileExists(File) Then .DeleteFile File, 1
End With
Set oReg = Nothing: Set oCol = Nothing
 
Sub Recursion(Key)
   oReg.EnumKey &H80000001, Key, sKeys
   If VarType(sKeys) <> 1 Then
      oCol.Add Key
      For Each sKey In sKeys
         Recursion Key & "\" & sKey
      Next
   Else oReg.DeleteKey &H80000001, Key
   End If
End Sub
1
0 / 0 / 0
Регистрация: 08.12.2021
Сообщений: 70
26.07.2022, 08:07  [ТС] 3
Скрипт работает, спасибо.
Хотелось бы прояснить - почему vbs не может удалить раздел реестра, если имеются подразделы? Батник легко всё делает, и работает с тем же путём %appdata%.
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,127
26.07.2022, 10:05 4
Пожал'ста.

VBS и батник тут ни при чём. Методы RegDelete и DeleteKey соотв. объектов в своих библиотеках COM не реализованы для вызова рекурсивных API-функции RegDeleteTreeW или SHDeleteKeyW, а базируются на RegDeleteKeyExW, как, впрочем, и утилита reg.exe, но в ней предусмотрена самостоятельная рекурсия вроде той, что я написал.
P. S.: За счёт чего реализуется Remove-Item <Key> -Recurse в powershell затрудняюсь ответить.

Переменные среды вроде %appdata% могут раскрываться за счёт функций CreateProcessW/WinExec, реализованных в методах Run/Exec объекта WshShell, как, собственно, и в командном интерпретаторе cmd.exe. В функциях вроде удаления файла (DeleteFile) этого нет.
0
0 / 0 / 0
Регистрация: 08.12.2021
Сообщений: 70
26.07.2022, 10:34  [ТС] 5
Понял, спасибо
0
26.07.2022, 10:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2022, 10:34
Помогаю со студенческими работами здесь

Права на ветки реестра
В моей программе вывода дерева для ветки реестра HKLM\\SYSTEM\\CurrentControlSet\\Enum\\USB при...

Чтение ветки с реестра
мне нужно чтобы программа читала ветку с реестра т.е. с файлов все данные и т.д делаю так var...

Изменить параметр ветки реестра
вот ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion\Winlogon параметр...

Вытащить параметры ветки реестра
Как из ветки реестра вытащить все доступные параметры? желательно в массив загнать, чтобы потом...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru