EDITED для правильного ответа на вопрос. Оригинальный ответ, который создает ярлык в Сетевые расположения сохраняется в конце.
После некоторого испытании сетевого расположение является ReadOnly папка ubicated в папке %AppData%\Microsoft\Windows\Network Shortcuts
, с двумя файлами внутри: в desktop.ini
с точным содержанием (см в коде) и target.lnk
ярлыка к цели.
Option Explicit
Function CreateNetworkLocation(networkLocationName, networkLocationTarget)
Const ssfNETHOOD = &H13&
Const fsATTRIBUTES_READONLY = 1
Const fsATTRIBUTES_HIDDEN = 2
Const fsATTRIBUTES_SYSTEM = 4
CreateNetworkLocation = False
' Instantiate needed components
Dim fso, shell, shellApplication
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set shell = WScript.CreateObject("WScript.Shell")
Set shellApplication = WScript.CreateObject("Shell.Application")
' Locate where NetworkLocations are stored
Dim nethoodFolderPath, networkLocationFolder, networkLocationFolderPath
nethoodFolderPath = shellApplication.Namespace(ssfNETHOOD).Self.Path
' Create the folder for our NetworkLocation and set its attributes
networkLocationFolderPath = fso.BuildPath(nethoodFolderPath, networkLocationName)
If fso.FolderExists(networkLocationFolderPath) Then
Exit Function
End If
Set networkLocationFolder = fso.CreateFolder(networkLocationFolderPath)
networkLocationFolder.Attributes = fsATTRIBUTES_READONLY
' Write the desktop.ini inside our NetworkLocation folder and change its attributes
Dim desktopINIFilePath
desktopINIFilePath = fso.BuildPath(networkLocationFolderPath, "desktop.ini")
With fso.CreateTextFile(desktopINIFilePath)
.Write "[.ShellClassInfo]" & vbCrlf & _
"CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" & vbCrlf & _
"Flags=2" & vbCrlf
.Close
End With
With fso.GetFile(desktopINIFilePath)
.Attributes = fsATTRIBUTES_HIDDEN + fsATTRIBUTES_SYSTEM
End With
' Create the shortcut to the target of our NetworkLocation
Dim targetLink
targetLink = fso.BuildPath(networkLocationFolderPath, "target.lnk")
With shell.CreateShortcut(targetLink)
.TargetPath = networkLocationTarget
.Save
End With
' Done
CreateNetworkLocation = True
End Function
CreateNetworkLocation "Tests", "\\192.168.1.2\c$"
Испытано в ОС Windows 7.
Оригинальный ответ - Только в случае, если кто-то считает полезным
Все, что вам нужно, это создать ярлык в папке adecuated:
%AppData%\Microsoft\Windows\Network Shortcuts
Просто образец VBScript (как указано в вопросе, не уверен, что если метки указывает на другой потребности)
Option Explicit
Const ssfNETHOOD = &H13&
Dim fso, shell, shellApplication
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set shell = WScript.CreateObject("WSCript.Shell")
Set shellApplication = WScript.CreateObject("Shell.Application")
Dim networkLocationsFolder
networkLocationsFolder = shellApplication.Namespace(ssfNETHOOD).Self.Path
With shell.CreateShortcut(fso.BuildPath(networkLocationsFolder, "Test PC.lnk"))
.TargetPath = "\\192.168.1.10\c$"
.WindowStyle = 1
.IconLocation = "shell32.dll, 9"
.Description = "Access to Test computer drive"
.WorkingDirectory = "\\192.168.1.10\c$"
.Save
End With
Спасибо, что близко к тому, что я после, но я пытаюсь найти способ добавить их как фактическое местоположение сети, а не ярлык. Они также должны появляться под левым деревом при открытии «Мой компьютер». –
@ sam_7_h, ответ обновлен. –