Произошла исключительная ситуация wshshell exec не удается найти указанный файл
На некоторых компьютерах не запускается программа через WScript.Shell
Не знаю даже куда копать.
Только вчера столкнулся с той же проблемой. Причем exec работате, а run нет. Выскакивает ошибка 80070002- система не может найти файл. А мне нужно было запустить именно через RUN приложение в скрытом виде. Связано это с тем, что в системных папках с длинными именами система почему то файл не находит. Вышел из положения, приобразовав путь к файлу в систему 8+3.
Мой файл в папке: C:\Program Files\Common Files\Gadget Terminal\GadgetTerminal.exe.
Циклом прошел через команду ADIR по всем веткам и создал коректный короткий путь: C:\Progra~1\Common~1\Gadget~1\GadgetTerminal.exe и все заработало/
Циклом по всем веткам пути проходил именно для возврата корректного значения. Мало ли, вдруг на диске есть папка Program Files и Папка ProgrammFiles. Какая из них будет первая,- не известно. Наверное есть более простой и правильный способ вернуть короткий путь, но я его не знаю и не заморачивался на поиск. На время работы программы это не влияет
Исправлено: Chemberzhy, 26.02.13 14:19
А дополнительные кавычки не помогают?
Смотреть журнал Windows на предмет ошибок, возможно, там есть какие-то комментарии.
------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Мне не помогло. Это первое, что я попробовал. Причем, что интересно. Любые пути в HOME папке отрабатывают без проблем, а вот за ее пределами- болт с газовой резьбой
Может дело именно в Винде-7?
Похоже, что не достаточно прав или не используются двойные кавычки в ограничении строк в путях с пробелами.
Например,
cmd /c "с:\Program Files\Prog\моя программа.exe" /с param1
------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
В журналах нет вообще ничего.
Я повторюсь. Я сказал, что на некоторых компьютерах.
Видимых различий между компьютерами (системой) на которых запускается и теми на которых нет я не нашел.
Пути везде одинаковые если речь о кавычках.
Исправлено: FoxShip, 27.02.13 12:32
Например, запрет на запуск exe с сетевых шар. Либо вообще всех, либо неподписанных. Смотреть настройки безопасности IE (и там же добавлять этот server-ivc в доверенную зону - с которой разрешён запуск exe-ников).
Я так подозреваю, что проблему можно увидеть и при "ручном" запуске этого exe с данных машин - возможно она проявится не в том что он "вообще не будет работать", а в том что появятся всякие диалоги UAC-а типа "Чо, разрешить потенциальный вирус, а нафига тебе это".
Привет, сейчас речь пойдет об ошибке Windows Script Host «Не удается найти указанный файл», которая возникает в операционных системах Windows, а также мы разберем причины возникновения данной ошибки и что нужно делать, чтобы подобного рода ошибки не появлялись в будущем.
Чтобы сразу было понятно, о каких ошибках мы сейчас будем разговаривать, давайте посмотрим на окно с этой ошибкой.
Название и путь к файлу сценария могут быть разными, все зависит от фантазии разработчика, имя скрипта может быть простым, непонятным набором букв или замаскированным под системный файл, чтобы Вы подумали, что так оно и есть, в данном случае это — «C:\ProgramData\SystemService.vbs». Операционная система в этом случае, скорей всего, нормально загружается, но бывает, что во время загрузки операционной системы появляется похожая ошибка и все, рабочий стол не запускается. Это относится к таким ошибкам как – «Не удается найти файл сценария C:\Windows\run.vbs».
Сегодня я покажу, как устранить ошибку в обоих случаях. Но сначала давайте поговорим о причинах возникновения этих ошибок.
Устранение ошибки, когда рабочий стол не запускается
В данном случае Вы включаете компьютер, и у Вас появляется ошибка, рабочий стол при этом Вы не видите. К таким ошибкам можно отнести ошибку — «Не удается найти файл сценария C:\Windows\run.vbs».
В этом случае вирус поработал с реестром, а именно изменил параметры запуска системы.
Для того чтобы устранить данную ошибку, необходимо запустить редактор реестра и восстановить значения параметров по умолчанию. Давайте сначала запустим рабочий стол, для этого:
- Нажимаем сочетание клавиш ctrl+alt+del;
- Выбираем пункт «Запустить диспетчер задач»;
- В меню нажимаем «Файл -> Новая задача (Выполнить…)»;
- В поле открыть вводим «explorer.exe».
После этого рабочий стол запустится.
Теперь запускаем редактор реестра. Для этого нажимаем «Пуск -> в поиск вводим regedit».
Затем находим раздел
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon для 32 разрядных систем
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows для 64 разрядных.
И проверяем параметры Shell и Userinit. Их значения должны равняться «explorer.exe» и «C:\Windows\system32\userinit.exe,» соответственно.
Если значения другие, изменяйте их на значения по умолчанию, для этого просто вызовите окно изменения параметра (двойным кликом или правой кнопкой изменить) и введите нужное значение. Потом перезагружаетесь, и ошибка должна исчезнуть.
У меня на этом все, если Вы столкнулись с подобного рода ошибкой и устранили ее каким-то другим образом, поделитесь решением с другими в комментариях. Пока!
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
Соответственно получаем ошибку "не удается найти указанный файл"
я так понимаю что Run не находит файл по этому пути C:\Program Files\7-Zip\7z.exe т.к. в нем пробелы.
Как обойти? Поисковики замучил, ответа на свой вопрос не нашел, возможно что не правильно искал.
lion shadow
Добавлено:
Если запустить, то что ты привел, действительно: Система не может…
Если заменить, как я сказал
Спасибо за помощь, привел к этому виду, , все заработало
Archivator="C:\Program files\7-Zip\7z.exe"
ArchivParam1=Probel & "a" & Probel & Destinition & Data & ".7z" & Probel & "-slp" & Probel & SorceFolder & Probel & "-ssw" & Probel & "-sccUTF-8" & Probel & ">" & Destinition & Data & ".txt"
ArchivCommand1=CHR(34) & Archivator & CHR(34)& ArchivParam1
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%comspec% /c " & ArchivCommand1, 0, vbTrue
Probel соответственно - " "
SorceFolder, Destinition, Data - переменные.
Может кому пригодится такая структура для архивирования папок.
WScript.Sleep 50000
Set WshExec = WshShell.Exec("C:\001\lan2\vpn.lnk")
В данном коде параметру strRegistryKeyAndSubsToDelete присваивается значение \Software\Programm 1, помогите пожалуйста изменить код так чтобы можно было присвоить n-ое кол-во значений для этого параметра (т.е. чтобы удалялся не только указанный раздел реестра, а несколько указанных разделов.
попробуй это, токо осторожно, не удали что-то нужное
sub DelSubkey(root,key,del_text)
iR = r.EnumKey(root,key,dsSubKeys)
if iR=0 and IsArray(dsSubKeys)=-1 then
For each dsKey in dsSubKeys
DelSubkey root,key+"\"+dsKey,del_text
Next
end if
if instr(key,del_text)>0 then
r.DeleteKey root,key
else
ir=r.EnumValues(root,key,val,vtype)
if iR=0 and IsArray(val)=-1 then
for k=0 to ubound(val)
if instr(cstr(val(k)),del_text)>0 then r.DeleteValue root,key,val(k)
next
end if
end if
PS
второй параметр может быть Software или System
DelSubkey &H80000002,"software","test"
For Each task In colTasks
If task.Visible Then
WScript.Echo task.Name
End If
Next
'нужно знать название окна
If colTasks.Exists("Outlook") Then
colTasks("Outlook").Close
End If
На некоторых компьютерах не запускается программа через WScript.Shell
Не знаю даже куда копать.
Только вчера столкнулся с той же проблемой. Причем exec работате, а run нет. Выскакивает ошибка 80070002- система не может найти файл. А мне нужно было запустить именно через RUN приложение в скрытом виде. Связано это с тем, что в системных папках с длинными именами система почему то файл не находит. Вышел из положения, приобразовав путь к файлу в систему 8+3.
Мой файл в папке: C:\Program Files\Common Files\Gadget Terminal\GadgetTerminal.exe.
Циклом прошел через команду ADIR по всем веткам и создал коректный короткий путь: C:\Progra~1\Common~1\Gadget~1\GadgetTerminal.exe и все заработало/
Циклом по всем веткам пути проходил именно для возврата корректного значения. Мало ли, вдруг на диске есть папка Program Files и Папка ProgrammFiles. Какая из них будет первая,- не известно. Наверное есть более простой и правильный способ вернуть короткий путь, но я его не знаю и не заморачивался на поиск. На время работы программы это не влияет
Исправлено: Chemberzhy, 26.02.13 14:19
А дополнительные кавычки не помогают?
Смотреть журнал Windows на предмет ошибок, возможно, там есть какие-то комментарии.
------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Мне не помогло. Это первое, что я попробовал. Причем, что интересно. Любые пути в HOME папке отрабатывают без проблем, а вот за ее пределами- болт с газовой резьбой
Может дело именно в Винде-7?
Похоже, что не достаточно прав или не используются двойные кавычки в ограничении строк в путях с пробелами.
Например,
cmd /c "с:\Program Files\Prog\моя программа.exe" /с param1
------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
В журналах нет вообще ничего.
Я повторюсь. Я сказал, что на некоторых компьютерах.
Видимых различий между компьютерами (системой) на которых запускается и теми на которых нет я не нашел.
Пути везде одинаковые если речь о кавычках.
Исправлено: FoxShip, 27.02.13 12:32
Например, запрет на запуск exe с сетевых шар. Либо вообще всех, либо неподписанных. Смотреть настройки безопасности IE (и там же добавлять этот server-ivc в доверенную зону - с которой разрешён запуск exe-ников).
Я так подозреваю, что проблему можно увидеть и при "ручном" запуске этого exe с данных машин - возможно она проявится не в том что он "вообще не будет работать", а в том что появятся всякие диалоги UAC-а типа "Чо, разрешить потенциальный вирус, а нафига тебе это".
I have an issue with windows 10/vbscript
I have an environment that vbscript runs inside of another program (Diadem)
In Windows 7 this works
wshshell.run ("gsutil -m -q cp """ & gspath & """ C:\FilesToProcess" )
However in Windows 10 it doesnt I have to use this construct
dim commandfile:commandfile="C:\Diadem\" & filenamesrc & ".bat"
Dim BatchFile : Set BatchFile = fso.OpenTextFile(commandfile,2,true)
BatchFile.WriteLine "gsutil -m -q cp """ & gspath & """ C:\FilesToProcess"
BatchFile.Close
ie: exactly the same command
exec has the same root issue
Any ideas how to resolve
Устранение ошибки, когда рабочий стол доступен
Если у Вас система загружается и потом появляется ошибка, т.е. Вы видите рабочий стол и меню пуск, то скорей всего скрипт вызывается планировщиком заданий Windows. Например, ошибка «Не удается найти файл сценария C:\ProgramData\SystemService.vbs» — это последствия вируса, который как раз использовал планировщик для запуска скрипта. Существуют и другие способы запуска таких вредоносных скриптов, это и автозагрузка, и групповые политики, но они менее распространены, в автозагрузку сейчас, наверное, уже никто не помещает свои вредоносные программы или скрипты.
Итак, для того чтобы устранить ошибку нам нужно выяснить, как запускается скрипт, как я уже сказал, начинаем искать в планировщике заданий. Для этого запускаем его, нажимаем «Меню Пуск -> в поиске пишем Планировщик заданий»
Затем у нас возникает небольшая сложность, нам нужно найти задание, которое запускало скрипт и удалить его. Удалять все подряд не нужно, поэтому перед удалением убедитесь, что на вкладке «Действия» в строке запуск программы указан как раз тот путь, который нам показывает ошибка, т.е. в нашем случае это — «C:\ProgramData\SystemService.vbs».
Советую сразу начать поиск с просмотра списка активных задач и истории запуска этих задач. Если журнал всех заданий выключен, то включите его и перезагрузитесь, затем после того как появится ошибка, снова зайдите в планировщик, где Вы сможете увидеть название последних выполненных задач.
Задание может располагаться в отдельном разделе, причем этот раздел может быть замаскирован под системный, но не совсем, например, раздел «Windowss», как видите, — в названии ошибка (две буквы s), поэтому сразу проверяйте этот каталог.
После того как Вы нашли нужное задание или задания можете смело удалять его, затем перезагружайтесь, после чего ошибка должна исчезнуть.
Если задание Вы не нашли, то можете проделать действия, которые описаны ниже (т.е. проверить реестр).
Все ответы
What does "however in Windows 10 it [sic] doesnt" mean?
Why not use PowerShell instead of VBScript?
-- Bill Stewart [Bill_Stewart]
I am restricted by environment, it has to run within diadem which only supports vbscript
Basically in either run or exec wshshell reports file not found.
From a shell the command works, and as I said the exact same command works perfectly on my local machine which is windows 7
I'm suspecting that windows 10 isnt respecting the path or blocking something
The issue is caused by how Diadem handles strings. Contact diadem to see how they think you should code this when run under their version of the shell object (WSH) API.
Why would this be different in windows 10?
Many things have changed in W10 for COM objects due to patches and COM restrictions. Also many bugs in string handling may cause issues with older software.
The COM object that is used to execute VBS as an extension to a product is no longer supported by MS. I would suspect that the vendor may have an old COM library or they may have other issues. Only the vendor can help with this.
You can also suspect the embedded quotes. Try using the 8.3 file name and you can eliminate the quotes. This is, in effect, what the batch file does - it eliminates the embedded quotes.
Example: The 8.3 name for the "Programs Files" folder is "PROGRA~1"
for your "gspath" just replace the folder that causes you to need quotes and remove the extra quotes. Test this to see if it is only the embedded quotes. If it is then tell the vendor to see if they have an alternate method.
You should also try this:
wshshell.run "gsutil -m -q cp \""" & gspath & "\"" C:\FilesToProcess"
Also try just this:
wshshell.run "gsutil -m -q cp """ & gspath & """ C:\FilesToProcess"
You can get the error for the call like this:
exitcode = wshshell.run ("gsutil -m -q cp """ & gspath & """ C:\FilesToProcess" )
With the assignment, parens are legal. Without the assignment the parens are an issue with VB languages.
Причины возникновения ошибки Windows Script Host «Не удается найти указанный файл»
Из информации, которая отображена в окне ошибки, мы понимаем, что система пытается запустить некий скрипт WSH (Windows Script Host), о том, что это такое, можете почитать в материале – «Основы языка JScript — написание WSH скриптов». При этом система не может его найти, это означает, что он был удален, перемещен, в общем, его нет. Теперь возникают вопросы, для чего нужен этот скрипт? И кем он был удален?
То, что данного скрипта больше нет, на самом деле неплохо, так как данный скрипт — это часть вируса, который был в Вашей системе, скорей всего его удалила антивирусная программа. В том, что вирус попал в систему, виноваты Вы, так как подобные вирусы заражают компьютер после определенных Ваших действий, например, Вы скачали музыку в формате exe и запустили данный файл или другие подобные действия, которые могут подвергать Ваш компьютер опасности (посещение сомнительных сайтов и скачивание таких же данных).
Примечание! Существуют и другие причины появления ошибок Windows Script Host, но они менее распространены, в данном материале речь идет именно об ошибках, связанных с вредоносными скриптами.
Что делать, чтобы такие ошибки не появлялись?
Поскольку мы выяснили, что такая ошибка — это следствие нахождения вируса в системе, действия, которые необходимо делать, чтобы такие ошибки не появлялись, связаны с предотвращением заражения компьютера вирусами.
Что для этого нужно:
- Наличие антивирусной программы с актуальными базами данных, т.е. она должна постоянно обновляться. Также необходимо периодически запускать полную проверку компьютера на наличие вирусов. Если не хотите платить за антивирус, можно использовать и бесплатные варианты, для домашнего компьютера они, на самом деле, не так плохи. Несколько лет назад в материале «Какой антивирус установить себе на домашний компьютер?» я рассматривал различные антивирусные решения и представил перечень продуктов, которые заслуживают внимания, основывался я на рейтингах, отзывах и на собственном опыте работы с антивирусами, поэтому если кому интересна эта информация, можете ознакомиться;
- В большинстве случаев за компьютером работают от имени учетной записи с правами администратора. Но это неправильно, так как права администратора нужны только для выполнения административных задач, в некоторых случаях для Вас это может быть не очень удобно, но большинству вирусов, для того чтобы сделать то, для чего они были разработаны, нужны как раз права администратора. И если Вы работаете с правами администратора, то для вирусов это идеальные условия, так как они без проблем могут установить что-нибудь, изменить параметры системы и так далее. Поэтому рекомендуется работать от имени пользовательской учетной записи, а права администратора использовать при необходимости (Вам нужно просто создать отдельную пользовательскую учетную запись и работать от ее имени);
- Не стоит посещать сомнительные сайты, скачивать файлы, формат которых не соответствуют своему назначению, например, как я уже говорил музыку в формате exe, как Вы понимаете, аудио файлов в таком формате быть не может. Это также относится и к играм, т.е. не нужно скачивать игры из непроверенных источников. Другими словами, данный пункт подразумевает быть немного осторожней, когда пользуетесь Интернетом и пытаетесь скачать какие-то данные.
Если Вы будете выполнять хотя бы вышеперечисленные действия, то возможностей у вируса заразить Ваш компьютер будет намного меньше, и, соответственно, ошибки, которые мы рассматриваем в данной статье, появляться не будут.
Читайте также: