Ваша ссылка указывает на версию Windows 95/98, и я предполагаю, что у Вас есть, по крайней мере, Windows 2000 или XP. Необходимо попробовать версию NT здесь .
, Кроме того, использование немного VBScript, который можно назвать из командной строки:
set objWSHShell = CreateObject("WScript.Shell")
set objFso = CreateObject("Scripting.FileSystemObject")
' command line arguments
' TODO: error checking
sShortcut = objWSHShell.ExpandEnvironmentStrings(WScript.Arguments.Item(0))
sTargetPath = objWSHShell.ExpandEnvironmentStrings(WScript.Arguments.Item(1))
sWorkingDirectory = objFso.GetAbsolutePathName(sShortcut)
set objSC = objWSHShell.CreateShortcut(sShortcut)
objSC.TargetPath = sTargetPath
objSC.WorkingDirectory = sWorkingDirectory
objSC.Save
Сохранили файл как createLink.vbs и называют его как это для получения то, что Вы первоначально попробовали:
cscript createLink.vbs "C:\Documents and Settings\%USERNAME%\Desktop\Program1 shortcut.lnk" "c:\program Files\App1\program1.exe"
cscript createLink.vbs "C:\Documents and Settings\%USERNAME%\Start Menu\Programs\Program1 shortcut.lnk" "c:\program Files\App1\program1.exe"
, Который сказал, что я убеждаю Вас не использовать пути hardcoded как "Меню"Пуск"", так как они отличаются в локализованных версиях окон. Измените сценарий вместо этого для использования специальные папки .
Это - вид вещи, что PowerShell действительно хорош в и является поэтому причиной сторониться пакетных файлов и войти в PowerShell побеждающая сторона.
PowerShell может говорить с.NET . Например, можно получить местоположение Рабочего стола как это:
[Environment]::GetFolderPath("Desktop")
PowerShell может говорить с объектами COM, включая WScript.Shell
, который может создать ярлыки:
New-Object -ComObject WScript.Shell).CreateShortcut( ... )
, Таким образом, Ваш сценарий мог бы быть похожим:
$linkPath = Join-Path ([Environment]::GetFolderPath("Desktop")) "MyShortcut.lnk"
$targetPath = Join-Path ([Environment]::GetFolderPath("ProgramFiles")) "MyCompany\MyProgram.exe"
$link = (New-Object -ComObject WScript.Shell).CreateShortcut( $linkpath )
$link.TargetPath = $targetPath
$link.Save()
Ярлыки имеют много настроек это WScript. Shell не может управлять, как "выполненный как администратор" опция. Они только доступны через интерфейс Win32 IShellLinkDataList
, который является реальной болью для использования, но он может быть сделан.
Используя vbscript:
set WshShell = WScript.CreateObject("WScript.Shell" )
strDesktop = WshShell.SpecialFolders("AllUsersDesktop" )
set oShellLink = WshShell.CreateShortcut(strDesktop & "\shortcut name.lnk" )
oShellLink.TargetPath = "c:\application folder\application.exe"
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "c:\application folder\application.ico"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = "c:\application folder"
oShellLink.Save
Касательно: http://www.tomshardware.com/forum/52871-45-creating-desktop-shortcuts-command-line
Сбой, что, быстрый поиск Google показывает, существует много сторонних инструментов, которые могут создать .lnk файлы для ярлыков приложения. Я предполагаю, что необходимо придерживаться для наполнения, это доступно исходно в Windows хотя? VBscript является, вероятно, Вашим лучшим выбором, иначе я предложил бы пытаться копировать .lnk файл с Вашей машины или использовать его в качестве образца для наблюдения правильного формата для файла ярлыка.
Дополнительное примечание: link.bat, который Вы используете, для Windows 95/98 только:
Этот пакетный файл для Windows 95/98 только. Я отправлю эквивалент NT в группе новостей NT скоро.
версия короткой тонны отправляется в http://www.robvanderwoude.com/amb_shortcutsnt.html вместо этого. Вы могли бы попробовать это за подход .bat, если предпочтено по vbscript.
Альтернативный метод, с помощью сторонней утилиты:
Создание Ярлыка от командной строки (пакетный файл)
XXMKLINK:
С XXMKLINK, можно записать пакетный файл для установки программного обеспечения, которая была сделана специализированными программами установки. В основном XXMKLINK является инструментом, который собирает различную информацию из командной строки и упаковывает ее в ярлык.
xxmklink spath opath
where
spath path of the shortcut (.lnk added as needed)
opath path of the object represented by the shortcut