micromaestro Ответов: 2

Почему метод deletefolder vbscript не удаляется в windows 10 pro, а удаляется в windows 7 pro


Я выполнил чистую установку Windows 7 Pro на одной машине. Я также выполнил чистую установку Windows 10 Pro на другой машине. Обе машины находятся в локальной сети, изолированной от любой другой сети, включая интернет.Кроме того, ни на одной машине не было установлено никаких обновлений, а также никаких других программных приложений, установленных на обеих машинах.На каждой машине просто установлена операционная система.Я разработал vbscript, который удаляет архивные папки, их подпапки и содержимое старше шести месяцев с даты настоящего момента.Приложение использует метод DeleteFolder с необязательным логическим параметром имеет значение true

объект.DeleteFolder ( folderspec[, force] );

Вот мой код

if (objFSO.FolderExists(strBackupFoldToDelete & strInternationalDate)) затем
objFSO.DeleteFolder(strBackupFoldToDelete & strInternationalDate), true

Приложение выполняется успешно и безупречно на Windows 7 Pro, но предварительно завершается с ошибкой 800A004C Path not found error на Windows 10 Pro.

Любые предложения, почему 800A004C Path not found ошибка возникает в Windows 10 Pro?
Реализовали все возможные вариации круглых скобок, но безрезультатно.


С наилучшими пожеланиями

Что я уже пробовал:

каждая вариация метода DeleteFolder скобок

phil.o

Каковы ценности, которыми придерживаются strBackupFoldToDelete и strInternationalDate переменные величины?

micromaestro

последовал вашему предложению, и ошибка сохраняется. Эти пути абсолютно идентичны как в windows 7 pro, так и в windows 10 pro. Данные идентичны.Обе машины подключены к одному и тому же запоминающему устройству. Единственная переменная-это операционная система; одна-windows 7 pro 64 bit, другая-windows 10 pro 64 bit. Код идентичен.Пользователь является администратором на обеих машинах.Код удаляет архивированные встроенные MyDocuments и встроенные папки рабочего стола на устройстве хранения данных при выполнении в windows 7 pro, но предварительно завершается в windows 10 pro с не найденным путем.Весьма признателен и благодарен за ваши усилия и советы.

phil.o

Я понимаю, что это одинаковые значения на обеих ОС. Мой вопрос таков: каковы эти фактические значения? Потому что данный путь может быть доступен в Windows 7, а не в Windows 10, из-за изменений в безопасности файловой системы между обоими поколениями.

micromaestro

Привет всем. Я нашел виновника, но не разгадку.Архивные папки содержат встроенные документы, рабочий стол, избранное, загрузки и другие пользовательские папки. При выполнении метода DeleteFolder встроенные папки "избранное" и "загрузки" вместе с другими пользовательскими папками и их содержимым удаляются, но встроенные папки "Документы" и "рабочий стол" не вызывают ошибки.Даже если необязательное логическое значение установлено True, если файлы или папки с установленным атрибутом только для чтения вызывают удаление файлов или папок
Любые предложения были бы весьма признательны

phil.o

Я бы посоветовал не удалять папки, а только их архивное содержимое. Вы не хотите возиться с пользовательскими папками, такими как документы или рабочий стол, поскольку на них можно ссылаться в бесчисленном количестве других мест, особенно в реестре. Сценарий архивации не должен удалять корневые папки пользователей высокого уровня.

ZurdoDev

Единственные 2 причины, по которым я видел ошибки path not found, заключаются в том, что 1) путь не найден, потому что его на самом деле нет, или 2) путь не найден, потому что исполняющий пользователь не имеет на него разрешения.

micromaestro

Привет всем. Я нашел виновника, но не разгадку.Архивные папки содержат встроенные документы, рабочий стол, избранное, загрузки и другие пользовательские папки. При выполнении метода DeleteFolder встроенные папки "избранное" и "загрузки" вместе с другими пользовательскими папками и их содержимым удаляются, но встроенные папки "Документы" и "рабочий стол" не вызывают ошибки.Даже если необязательное логическое значение установлено True, если файлы или папки с установленным атрибутом только для чтения вызывают удаление файлов или папок
Любые предложения были бы весьма признательны

2 Ответов

Рейтинг:
1

OriginalGriff

Windows 10 (и 8, на которой она основана) гораздо более заботятся о безопасности, чем Windows 7: Вы больше не владеете своей машиной, и многие, многие папки будут нуждаться в явных разрешениях для доступа к ним, которые пользователь, под которым работает ваше приложение, вероятно, просто не имеет.

Например, все папки в разделе "Program Files" по умолчанию "read", "list" и "execute" включены для всех пользователей, но явно не включены "modify" или "write".
Если вы попытаетесь удалить файл в разделе "Программные файлы", то получите исключение "отказано в доступе", если только ваше приложение не работает с повышением прав.

Поэтому начните с выяснения того, под каким пользователем вы выполняете работу (опять же, по-другому в Win10), а затем найдите точно, какой путь вы хотите удалить. Затем проверьте права доступа к этой папке, и она будет родительской. Почти наверняка, это ваша проблема.

Это может помочь: Где я должен хранить свои данные?[^] - вероятно, стоит изменить способ работы вашего кода, чтобы использовать "разумные" папки данных, поскольку безопасность, которую мы имеем, будет только более жесткой, а не более гибкой!


micromaestro

E:\Archive\Clients_20190813_2000 например.Это полный путь, содержащий архивированные папки резервных копий

OriginalGriff

И существует ли эта папка на машине Win10? Какие пользователи имеют право доступа к нему?

micromaestro

Привет всем. Я нашел виновника, но не разгадку.Архивные папки содержат встроенные документы, рабочий стол, избранное, загрузки и другие пользовательские папки. При выполнении метода DeleteFolder встроенные папки "избранное" и "загрузки" вместе с другими пользовательскими папками и их содержимым удаляются, но встроенные папки "Документы" и "рабочий стол" не вызывают ошибки.Даже если необязательное логическое значение установлено True, если файлы или папки с установленным атрибутом только для чтения вызывают удаление файлов или папок
Любые предложения были бы весьма признательны

Рейтинг:
0

Dave Kreskowiak

Есть и третий вариант. Путь, который вы построили с помощью конкатенации строк, не является допустимым путем. Обычно это происходит потому, что вы думаете, что переменные содержат не то, что они содержат.

Например, если ваш strBackupFoldToDelete переменная содержит "D:\SomeData\" а ваш strInternationalDate переменная содержит "01-02-2020.txt", ваш код построит путь, который выглядит следующим образом:

D:\SomeData\01-02-2020.txt"

Но, если ваш strBackupFoldToDelete переменная содержит "D:\SomeData" (видите разницу?), в результате будет совсем другой путь:
D:\SomeData01-02-2020.txt


Не создавайте имена путей внутри вызовов методов. Создайте путь и сохраните результат в переменной, чтобы облегчить отладку кода. Это позволило бы вам довольно легко показать путь, который он пытается пройти.


micromaestro

последовал вашему предложению, и ошибка сохраняется. Эти пути абсолютно идентичны как в windows 7 pro, так и в windows 10 pro. Данные идентичны.Обе машины подключены к одному и тому же запоминающему устройству. Единственная переменная-это операционная система; одна-windows 7 pro 64 bit, другая-windows 10 pro 64 bit. Код идентичен.Пользователь является администратором на обеих машинах.Код удаляет архивированные встроенные MyDocuments и встроенные папки рабочего стола на устройстве хранения данных при выполнении в windows 7 pro, но предварительно завершается в windows 10 pro с не найденным путем.Весьма признателен и благодарен за ваши усилия и советы.

micromaestro

E:\Archive\Clients_20190813_2000 например.Это полный путь, содержащий архивированные папки резервных копий

Dave Kreskowiak

Я не знаю, что тебе сказать. Этот путь, который вы построили, не существует на машине Win10.

micromaestro

Привет всем. Я нашел виновника, но не разгадку.Архивные папки содержат встроенные документы, рабочий стол, избранное, загрузки и другие пользовательские папки. При выполнении метода DeleteFolder встроенные папки "избранное" и "загрузки" вместе с другими пользовательскими папками и их содержимым удаляются, но встроенные папки "Документы" и "рабочий стол" не вызывают ошибки.Даже если необязательное логическое значение установлено True, если файлы или папки с установленным атрибутом только для чтения вызывают удаление файлов или папок
Любые предложения были бы весьма признательны