Полина_Комиссарова@vk, как уже выше отметил коллега
mwz, дело в том, что Вы совершаете распространённую ошибку, полагая, что текущий каталог всегда будет равен каталогу, где расположен исполняемый файл, скрипт, пакетный файл, документ и т.п. В ряде случаев они могут и совпадать:
Цитата:
Цитата Полина_Комиссарова@vk
Запускаю файл вручную- все отлично , ярлык создался где надо »
|
В общем же случае надо помнить, что это совсем не так, и сие надо учитывать.
В Вашем частном случае всё строится именно на таком рассчёте:
Код:
If objFSO.FileExists(objFSO.GetBaseName(WScript.ScriptName) & ".lnk") …
— проверяется существование файла ярлыка в текущем для исполняемого скрипта каталоге. Когда скрипт запускается Вами «ручками» — текущим каталогом будет каталог скрипта. Когда скрипт запускается из:
Код:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
— текущим каталогом будет каталог исполняемого файла wscript.exe. Посему указанный код не найдёт там ранее созданного ярлыка и начнёт его создавать. Разумеется, там же — в %SystemRoot%\System32, поскольку и ниже по коду тот же самый рассчёт:
Код:
j = FSO.GetBaseName(WScript.ScriptName) 'Название ярлыка
…
Set f = st.CreateShortcut(j & ".lnk")
Чтобы этого не происходило, надо указывать полные пути.
Опишите Вашу задачу.