Войти

Показать полную графическую версию : [решено] Скрипт vbs для создания ярлыка на рабочем столе


Страниц : [1] 2

angel_lyucifer
17-12-2013, 23:20
Всем привет!
Я нашёл у вас на форуме нужный мне скрипт для создания ярлыков.
Но он у меня не работает и выдаёт ошибку, я не просто не понимаю что тут не так? Уважаемые знатоки, посмотрите его и если можете исправте пожалуйста?

@set @x=0 /*
@cscript/nologo /e:jscript "%~f0" "%~dp0file.exe" "%~dp0"
@exit */
sh=WScript.CreateObject("WScript.Shell")
lk=sh.CreateShortcut(sh.SpecialFolders("Desktop")+"\\file.lnk")
lk.TargetPath=WScript.Arguments(0)
lk.WorkingDirectory = WScript.Arguments(1)
lk.Save()

Iska
18-12-2013, 00:41
angel_lyucifer, потому что это пакетный файл — гибрид из пакетного файла, вызова JScript-интерпретатора и VBScript-кода.

Сохраняете его как «Name.cmd» и вызываете, например:
E:\Песочница\0336\0005.cmd
В результате получаете на Рабочем столе ярлык «file.lnk», указывающий на «file.exe», находящийся рядом с пакетным файлом — т.е.: «E:\Песочница\0336\file.exe».

Одним словом, крайне неудачный выбор.

angel_lyucifer
18-12-2013, 02:01
Одним словом, крайне неудачный выбор. »
Проблема такая, у меня есть файл Vlp.exe у него может быть любая директория, но мне нужно создать ярлык скриптом, этот скрипт будет лежать рядом с файлом...

angel_lyucifer
18-12-2013, 02:20
Iska »
Всё понял, спасибо...

Iska
18-12-2013, 03:19
у меня есть файл Vlp.exe у него может быть любая директория, но мне нужно создать ярлык скриптом, этот скрипт будет лежать рядом с файлом... »
Так:
Option Explicit

Dim strFileName

Dim objFSO
Dim strPath2File
Dim objFile


strFileName = "Vlp.exe"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strPath2File = objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), strFileName)

If objFSO.FileExists(strPath2File) Then
Set objFile = objFSO.GetFile(strPath2File)

With WScript.CreateObject("WScript.Shell")
With .CreateShortcut(objFSO.BuildPath(.SpecialFolders.Item("Desktop"), objFSO.GetBaseName(strFileName) & ".lnk"))
.TargetPath = objFile.Path
.WorkingDirectory = objFile.ParentFolder.Path

.Save
End With
End With

Set objFile = Nothing
Else
WScript.Echo "File [" & strPath2File & "] not found near this script."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

angel_lyucifer
18-12-2013, 21:53
Iska »
Скрипт, очень хорошей!
А как добавить описание для этого ярлыка?

Iska
19-12-2013, 00:44
With WScript.CreateObject("WScript.Shell")
With .CreateShortcut(objFSO.BuildPath(.SpecialFolders.Item("Desktop"), objFSO.GetBaseName(strFileName) & ".lnk"))
.TargetPath = objFile.Path
.WorkingDirectory = objFile.ParentFolder.Path
.Description = "Это мой ярлык"

.Save
End With
End With

angel_lyucifer
19-12-2013, 05:21
Большое спасибо, Iska! =)

deminand
16-01-2015, 11:04
а как выполнить его на удаленном компьютере для определенного пользователя. ПК в домене.

Iska
16-01-2015, 13:05
а как выполнить его на удаленном компьютере для определенного пользователя. ПК в домене. »
В составе LOGON-скрипта, например.

deminand
16-01-2015, 13:37
а без участия политик ?.

Iska
16-01-2015, 13:55
«Для определённого пользователя» — никак. Можно только «от имени указанного пользователя». То есть, нужно знать его пароль. Чего в нормальном окружении быть не должно.

P.S. Вы уверены, что ярлык нужен отдельным указанным пользователям, а не всем?

deminand
16-01-2015, 14:54
опреденно вы правы, процесс чтоб попасть в свой профиль должен быть от имени пользователя, однако:
1) скрипт нашел нужный ПЭВМ
2) скрипт помнит нужного пользователя пользователя
3) скрипт создает нужный ярлык - путь на запуск того что надо.
4) скрипт создает права - безопасность на выполнение файла, добавив что вася пупкин может запускать этот файл
3) скрипт засовывает на нужном компе в профиль пользователю нужный файл.

пункт 1 и 3 можно поменять местами.

при этом алгоритме "запуск от имени" для создания ярлыка непотребуется, достаточно пермишны установить мог админ через скрипт.

упрощено:
создал сам себе ярлык
запихнул в профиль пользователя на нужном компе
там выставил на файл .lnk пермишионалы

Iska
16-01-2015, 17:46
создал сам себе ярлык
запихнул в профиль пользователя на нужном компе »
Не делайте так.

скрипт засовывает на нужном компе в профиль пользователю нужный файл. »
И как именно Вы определите, где именно у конкретно взятого пользователя на конкретной машине расположен Рабочий стол? Впрочем, достаточно первого.

BOBAT
16-01-2015, 19:37
Цитата Iska:
И как именно Вы определите, где именно у конкретно взятого пользователя на конкретной машине расположен Рабочий стол? »
%USERPROFILE%\Desktop\

Iska
17-01-2015, 01:39
BOBAT, откуда Вы возьмёте «%USERPROFILE%» пользователя «X» для машины «Y» при исполнении скрипта под пользователем, отличным от «X», на машине «Z»? Далее, откуда такая уверенность, что папка Рабочего стола именуется исключительно «Desktop»? «Это не есть факт, месье Дюк» (с).

venom05
26-01-2016, 12:36
Есть вопрос по созданию ярлыка запуская скрипт из гиены,кто подскажет?

Iska
26-01-2016, 12:58
Есть вопрос по созданию ярлыка запуская скрипт из гиены,кто подскажет? »
Есть вопрос по толкованию понятия «гиена», кто подскажет?

venom05
26-01-2016, 13:26
Гиена утилита с помощью которой я админю компы в домене,типа DameWare NT Utilities

с помощью гиены я запускаю скрипт на определенном компьютере,проблема заключается в том-не могу никак додумать создание ярлыка на компе где запустил скрипт,вот пример
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

Set Argum = WScript.Arguments
strComputer = Argum(0)

Dim oShell
Dim oShortCut

set oShell = WScript.CreateObject ("WScript.Shell")
DesktopPath = oShell.SpecialFolders("AllUsersDesktop")

Set oShortCut = oShell.CreateShortcut(DeskTopPath & "\\" & strComputer & "\Proga.lnk")
oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
oShortCut.Save

в конце выдает ошибку: "C:\Users\Public\Desktop\имя компа\Ярлык.lnk"

Iska
26-01-2016, 13:45
в конце выдает ошибку: "C:\Users\Public\Desktop\имя компа\Ярлык.lnk" »
Точное сообщение об ошибке покажите (используйте «Ctrl-C» или «Alt-PrintScreen»).




© OSzone.net 2001-2012