Показать полную графическую версию : Не работает автозапуск скрипта
Доброго всем времени суток.
Столкнулся с такой проблемой: на машине стоит скрипт (os Windows 7 x64), копирующий файлы из папки А в папку В; автозапуск скрипта обеспечивается записью в реестре: "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ScriptName", d:\Distr\ScriptName.vbs". До недавнего времени все работало отлично, но после перестановки винды автозапуск перестал работать. При старте машины диспетчер задач отображает процесс wscript.exe, при этом скрипт не работает. Если запустить его принудительно (щелкнуть enter-ом по файлу скрипта), то появляется процесс wscript.exe*32 и тогда скрипт отрабатывает как надо.
Помогите пожалуйста восстановить автозапуск!
Petya V4sechkin
24-01-2012, 17:05
появляется процесс wscript.exe*32
Это ненормально (запуск 32-битной версии вместо 64-битной).
Попробуйте в командной строке (cmd.exe) от имени Администратора (http://oszone.net/4331/#5) выполнить:
regsvr32 atl.dll
regsvr32 dispex.dll
regsvr32 jscript.dll
regsvr32 scrrun.dll
regsvr32 scrobj.dll
regsvr32 vbscript.dll
regsvr32 msxml3.dll
regsvr32 ole32.dll
regsvr32 oleaut32.dll
wscript /regserver
После этого убедитесь, что в разделе реестра HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command параметр по умолчанию типа REG_EXPAND_SZ равен
"%SystemRoot%\System32\WScript.exe" "%1" %*
Если запустить его принудительно (щелкнуть enter-ом по файлу скрипта)
Откуда вы его щелкаете, в каком 32-битном файловом менеджере?
Откуда вы его щелкаете, в каком 32-битном файловом менеджере?
Total Commander 7.56a
После этого убедитесь, что в разделе реестра HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command параметр по умолчанию типа REG_EXPAND_SZ равен
"%SystemRoot%\System32\WScript.exe" "%1" %* Все так
Petya V4sechkin
25-01-2012, 09:42
Total Commander
Ну естественно, он же 32-битный.
Из проводника запустите скрипт.
на машине стоит скрипт
Содержимое выложите?
Содержимое выложите? Просто текстом в сообщение вставить или как лучше сделать?
Из проводника запустите скрипт.Запуск из проводника дает 64-х битный процесс wscript.exe. Скрипт соответственно не отрабатывает.
Petya V4sechkin
25-01-2012, 09:53
Просто текстом в сообщение вставить
С тегом CODE.
ON ERROR RESUME NEXT
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
folder_out = ".........................." ' папка откуда копировать
folder_in = "............................" ' папка куда копировать
period = 3000 'милисекунды
'' Запускаться при каждой перезагрузке
'Set File2 = f.GetFile(WScript.ScriptFullName)
'File2.Copy ("d:\Distr\Gigabyte.vbs")
's.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Gigabyte", d:\Distr\Gigabyte.vbs"
do
' Получаем список файлов
Set f_out = fso.GetFolder(folder_out)
Set f_in = fso.GetFolder(folder_in)
Set fc = f_out.Files
s = "File name" & vbtab & "created" & "accessed" & vbtab & "modified" & vbcrlf
For Each f1 in fc
' если файл сушествеут проверяем изменился ли он
If (fso.FileExists(folder_in & f1.name)) Then
' существует... проверяем изменился ли он (по дате модификации)
set f_inc = fso.GetFile(folder_in & f1.name)
if (f1.DateLastModified = f_inc.DateLastModified) then
else
' одноименный фаил во входной папке переименовываем с добавлением даты модификации
tmp = replace(f_inc.DateLastModified & "." & fso.GetExtensionName(f_inc.name),":","_")
tmp = replace(tmp," ","_")
'WScript.Echo tmp & vbtab & f_inc.name
'Wscript.Echo replace(f_inc.DateLastModified & "." & fso.GetExtensionName(f_inc.name),":","_")
f_inc.Copy(folder_in & fso.GetBaseName(f_inc.name) & "_" & tmp)
f_inc.Delete(vbTrue)
' копируемый файл просто копируем без изменения
f1.Copy (folder_in & f1.name )
end if
Else
' не существует.... копируем
f1.Copy (folder_in & f1.name)
End If
's = s & f1.shortname & vbtab & f1.DateCreated & vbtab & f1.DateLastAccessed & vbtab & f1.DateLastModified & vbcrlf
Next
WScript.Sleep(period)
loop
's.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Gigabyte", "C:\WINDOWS\SYSTEM\Gigabyte.vbs"
Petya V4sechkin
25-01-2012, 10:09
folder_out = ".........................." ' папка откуда копировать
folder_in = "............................" ' папка куда копировать
А чего точками? Секретная информация?
Уберите строку ON ERROR RESUME NEXT и смотрите, какую ошибку выдаст.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.