Скопируйте файл lnk, используя VBS - PullRequest
1 голос
/ 18 мая 2011

Вот мой код

Const ALL_USERS_DESKTOP = &H19&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(ALL_USERS_DESKTOP)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
objFSO.CopyFile "\\server\folder\folder\Name of File 8.5.lnk" , objFolderItem.Path , OverwriteExisting

Дает мне ошибку в последней строке. Я не уверен, в чем проблема, но я думаю, что это связано с файлом LNK. Если я помещаю файл bat или текстовый файл, файл копируется. LNK выдает ошибку.

Использование VBSEdit в качестве моего редактора и CScript (не WScript)

Сообщение об ошибке C: \ Users \ Public \ Desktop Ошибка времени выполнения Microsoft VBScript (18, 1): доступ запрещен

Я знаю, что у меня есть доступ к серверу и папке. Я также могу скопировать все другие файлы не LNK

------------- ОБНОВЛЕНИЕ -----

Я изменил код следующим

Const DESKTOP = &H10&
Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(DESKTOP)
    Set objFolderItem = objFolder.Self
    Wscript.Echo objFolderItem.Path
    objFSO.CopyFile "\\server\folder\folder\Name of File 8.5.lnk" , objFolderItem.Path , OverwriteExisting

То же самое. В нем говорится, что в доступе отказано (даже для моего рабочего стола). Используя мышь, я могу создавать на своем рабочем столе все, что захочу, без пароля или специальных привилегий.

Ответы [ 2 ]

1 голос
/ 19 мая 2011

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

Set Shell = CreateObject("WScript.Shell") 
DesktopPath = Shell.SpecialFolders("Desktop") 
Set link = Shell.CreateShortcut(DesktopPath & "\shortcut.lnk") 
link.TargetPath = "C:\dir\filename.vbs"  ' the location where you store the file on the server 
link.Arguments = ""
link.Description = "Shortcut"
link.HotKey = "CTRL+L"
link.IconLocation = "C:\dir\filename.ico"
link.WindowStyle = 1
link.WorkingDirectory = "C:\dir"
link.Save 
1 голос
/ 19 мая 2011

Я думаю, вам может понадобиться косая черта на пути к определению, так как он относится к папке:

objFSO.CopyFile "\\server\folder\folder\Name of File 8.5.lnk" , objFolderItem.Path & "\" , True

Без косой черты вы пытаетесь перезаписать папку, поэтому в доступе отказано.

...