2015-06-18 2 views
0

Сценарий: Предположим, у меня есть 100 пользователей, мне нужно, чтобы каждый пользователь добавил несколько сетевых адресов. Они не могут быть сетевыми дисками, так как некоторые пользователи уже имеют более 26 дисков.Автоматический скрипт для добавления нового сетевого местоположения НЕ Карта сетевого диска

Я надеялся сделать это, используя либо командный файл, либо скрипт VB. Мне удалось заставить его работать с использованием сценария VB, добавив короткие сетевые сокращения, но это не то решение, которое нужно пользователям. Я также нашел способы сделать это, сопоставляя сетевые диски, но, как я уже сказал, пользователи уже имеют большое количество дисков, и поэтому этот метод не может быть использован.

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

ответ

1

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 
+0

Спасибо, что близко к тому, что я после, но я пытаюсь найти способ добавить их как фактическое местоположение сети, а не ярлык. Они также должны появляться под левым деревом при открытии «Мой компьютер». –

+1

@ sam_7_h, ответ обновлен. –

Смежные вопросы