Как запустить ярлык с помощью WSH
пытаюсь запустить ярлык из скрипта, но никак не получается
fso = new ActiveXObject("Scripting.FileSystemObject");
wsh = new ActiveXObject("WScript.Shell");
WindowsDir = fso.GetSpecialFolder(0);
lnkrun = "c:\\test.lnk";
exerun = WindowsDir + "\\notepad.exe";
wordir = "c:\\";
var s = wsh.CreateShortcut(lnkrun);
s.WindowStyle = 4;
s.IconLocation = exerun;
s.TargetPath = exerun;
s.WorkingDirectory = wordir;
s.Save();
wsh.Run( lnkrun ); // не работает
wsh.Run( "start " + lnkrun ); // ошибка: не найден файл (не может найти start)
ярлык C:\test.lnk успешно создается и ведет к Блокноту, может быть запущен из проводника, но в скриптах возникают проблемы, в первом вызове wsh.Run вообще ничего не происходит, во втором вываливается ошибка (даже если точно прописать путь к программе start которая явно существует) не работает на win10, win7, даже на XP не пашет, в чем может быть проблема? |
VBS
Set WshShell = CreateObject("WScript.Shell")
path = WshShell.CurrentDirectory + "\"
fldr = WshShell.SpecialFolders("Desktop") + "\"
Set WshShortcut = WshShell.CreateShortcut(fldr + "test.lnk")
WshShortcut.IconLocation ="shell32.dll, 1"
WshShortcut.Description = "Test"
WshShortcut.Arguments = "C:\file.txt"
WshShortcut.TargetPath = "notepad.exe"
WshShortcut.WindowStyle = 1
WshShortcut.WorkingDirectory = path
WshShortcut.Save
WshShell.Run fldr + "test.lnk"
|
laimas спасибо, но решение нужно именно на JS
решение нашлось, может кому пригодится: (запуск ярлыка идет через командную строку насколько я понял)
wsh = new ActiveXObject("WScript.Shell");
lnk = "c:\\test.lnk";
wsh.Run( "%comspec% /c \"" + lnk + "\"" , 0 )
|
Разница большая? Там reateObject, а там ActiveXObject, и путь указать корректно.
|
laimas твой пример не работает, возникает ошибка "Не удается найти указанный файл" на строке 14
|
Цитата:
|
var wsh = new ActiveXObject("WScript.Shell"),
pth = wsh.CurrentDirectory + "\\", //текущая папка
lnk = wsh.CreateShortcut("main.lnk"); //создать ярлык в текущей папке
lnk.IconLocation = "shell32.dll, 1";
lnk.Description = "Test";
lnk.Arguments = "test.txt";
lnk.TargetPath = "notepad.exe";
lnk.WindowStyle = 1;
lnk.WorkingDirectory = pth;
lnk.Save();
wsh.Run(lnk); //блокнот откроется с запросом на создание файла, если его нет в текушей папке
|
| Часовой пояс GMT +3, время: 02:00. |