2011-05-18 4 views
1

Voici mon codeCopier un fichier .lnk VBS

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 

me donne une erreur sur la dernière ligne. Je ne suis pas sûr de ce que le problème est mais je pense que cela a à voir avec le fichier lnk. Si je mets un fichier bat ou un fichier txt, le fichier est copié. Le lnk donne une erreur.

En utilisant VbsEdit comme éditeur et CScript (non WScript)

message d'erreur est C: \ Users \ Public \ Desktop Erreur d'exécution Microsoft VBScript (18, 1): Autorisation refusée

Je sais que j'ai accès au serveur et au dossier. Je peux aussi copier tous les autres fichiers non LNK

MISE A JOUR ------------- -----

J'ai modifié le code avec le

suivant
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 

Même chose. Il dit Permission refusée (même à mon propre bureau). En utilisant la souris, je peux créer tout ce que je veux sur mon bureau sans mot de passe ni privilèges particuliers.

+0

Quelle erreur obtenez-vous? – SLaks

+0

J'utilise VBSEdit et il est dit [C: \ Users \ Public \ Desktop Erreur d'exécution Microsoft VBScript (18, 1): Autorisation refusée] –

+0

Mais pourquoi cela se produit-il uniquement pour les fichiers .lnk? Avez-vous essayé de copier des fichiers lnk. Je veux copier le raccourci (pas l'élément original). –

Répondre

1

J'ai dû recréer le raccourci parce que VBS ne le copiera pas.

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

Je pense que vous pourriez avoir besoin d'un slash sur votre chemin de detination comme il fait référence au dossier:

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

Sans la barre oblique, vous essayez de remplacer le dossier, d'où l'autorisation refusée.

+0

C'est une idée intéressante. Je vais l'essayer mais si je n'ai pas ajouté de barre oblique et que je voulais copier un autre fichier comme "Nom du fichier 8.5.doc", alors il copie le fichier sans problème. Donc c'est bizarre. Avez-vous essayé cela? –

+1

Peut-être que votre environnement est différent. J'ai essayé une version simplifiée. Avec slash c'est OK, sans, ça échoue avec la permission refusée. Définissez objFSO = CreateObject ("Scripting.FileSystemObject") objFSO.CopyFile "c: \ temp \ test.lnk", "c: \ test \", True – rd1966

Questions connexes