Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Создать ярлык, добавить в автозагрузку

Ответить
Настройки темы
VBS/WSH/JS - Создать ярлык, добавить в автозагрузку

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Вопрос может и слишком нубский, но все же.
Есть ТЕСТОВЫЙ вбсник суть которого состоит в том, чтобы создать ярлык(ярлык себя же - это только для примера) и добавить себя в автозагрузку при этом проверяя наличие ярлыка.
Код: Выделить весь код
Set fso = CreateObject("Scripting.FileSystemObject")

if fso.FileExists(FSO.GetBaseName(WScript.ScriptName) & ".lnk") then	'проверка наличия .lnk
	wscript.echo "yes"
else
		wscript.echo "no, add"							'создание .lnk
	Set st = CreateObject("WScript.Shell")
		j =  FSO.GetBaseName(WScript.ScriptName)		        'Название ярлыка
		c = ".lnk"										'Описание Ярлыка
		h =  WScript.ScriptFullName						'Суть к файлу для которого создается ярлык
		e = "14"										'Номер иконки ярлыка
	Set f = st.CreateShortcut(j & ".lnk")
		f.Description = c
		f.IconLocation = "shell32.dll," & e 
		f.TargetPath = h
		f.save()
end if
CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Window", WScript.ScriptFullName
Проблема состоит в том , что при запуске ПК ярлык вбс проверяет и создает файл не в своей папке (из которой был произведен запуск) а в "C:\Windows\System32\"
Где в коде ошибка?
И можно ли указать путь сохранения ярлыка?

Отправлено: 23:18, 28-07-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Полина_Комиссарова@vk:
при запуске ПК ярлык вбс проверяет и создает файл не в своей папке (из которой был произведен запуск) а в "C:\Windows\System32\" »
Как производится вызов скрипта на исполнение?

Отправлено: 00:28, 29-07-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
Как производится вызов скрипта на исполнение? »
После перезагрузки ПК скрипт запускается из рееста
Цитата Полина_Комиссарова@vk:
CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Window", WScript.ScriptFullName »

Отправлено: 12:56, 29-07-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Полина_Комиссарова@vk, определитесь. Выше Вы пишете про ярлык, ниже пишете про реестр. Что, за чем, куда — я уже толком перестал понимать.

Отправлено: 20:06, 29-07-2017 | #4


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
определитесь. Выше Вы пишете про ярлык, ниже пишете про реестр. Что, за чем, куда — я уже толком перестал понимать. »
Запускаю файл вручную- все отлично , ярлык создался где надо и добавляет себя в реестр
Цитата Полина_Комиссарова@vk:
CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Window", WScript.ScriptFullName »
после перезагрузки ПК файл загружается из автозагрузки и пытается создать файл в "C:\Windows\System32\" а не в папке где сам находится(как мне надо)

Отправлено: 20:13, 29-07-2017 | #5

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


Цитата Полина_Комиссарова@vk:
и пытается создать файл в "C:\Windows\System32\" а не в папке где сам находится(как мне надо) »
А где вы в скрипте сказали, что надо в его папке создавать файл??
Не надо путать папку, из которой запускается программа (или скрипт), с её рабочей папкой, которая в общем случае не совпадает с папкой запуска.

-------
Mikhail Zhilin


Отправлено: 23:28, 29-07-2017 | #6


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата Полина_Комиссарова@vk:
И можно ли указать путь сохранения ярлыка? »
Цитата mwz:
А где вы в скрипте сказали, что надо в его папке создавать файл?? »

Отправлено: 23:51, 29-07-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Полина_Комиссарова@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")
Чтобы этого не происходило, надо указывать полные пути.

Опишите Вашу задачу.

Отправлено: 05:52, 30-07-2017 | #8

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


Сообщения: 8595
Благодарности: 2127

Профиль | Сайт | Отправить PM | Цитировать


Iska, насколько я понял, в данной [частной] задаче надо создавать этот ярлык именно в той папке, где расположен сам скрипт.
И тогда надо указывать полный путь не в явном виде, а так, как в батниках делается использованием префикса %~dp0.

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 30-07-2017 в 10:04.


Отправлено: 09:44, 30-07-2017 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата mwz:
Iska, насколько я понял, в данной [частной] задаче надо создавать этот ярлык именно в той папке, где расположен сам скрипт. »
Вот мне бы хотелось послушать про саму задачу.

Цитата mwz:
И тогда надо указывать полный путь не в явном виде, а так, как в батниках делается использованием префикса %~dp0, т.е. созданием объекта WScript.FullName или для большей универсальности (тогда путь и имя скрипта будут разделены) — с использованием WScript.Path »
Не то. Это пути к исполнителю — wscript.exe/cscript.exe. Путь к каталогу скрипта — objFSO.GetParentFolderName(WScript.ScriptFullName).

Отправлено: 09:59, 30-07-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Создать ярлык, добавить в автозагрузку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Добавить программу в автозагрузку Андроид SKSKSS Мобильные ОС, смартфоны и планшеты 2 05-07-2014 13:57
Службы - [решено] Добавить свою программу в автозагрузку ? jannaly Microsoft Windows 7 6 27-12-2012 23:21
Прочие - Как добавить Avast в автозагрузку? slonikdva Защита компьютерных систем 4 11-10-2012 07:17
Программы - Как добавить программу в автозагрузку? Pasha-hard Автоматическая установка Windows 2000/XP/2003 2 22-11-2010 20:08
как добавить модули в автозагрузку hameg Программное обеспечение Linux и FreeBSD 6 11-12-2003 06:31




 
Переход