Андрей Попов - Windows Script Host для Windows 2000/XP
WshNetwork = WScript.CreateObject("WScript.Network");
WshShell = WScript.CreateObject("WScript.Shell");
Для того чтобы подключить сетевой диск к устройству K:, нужно быть уверенным, что с этой буквой уже не связан сетевой диск (иначе произойдет ошибка). Поэтому предварительно отключается сетевой диск с помощью метода RemoveNetworkDrive:
WshNetwork.RemoveNetworkDrive(Drive);
(переменной Drive заранее было присвоено значение "K:"). При выполнении этой команды может произойти ошибка времени выполнения (например, диск K: не существует или возникла ошибка при отключении связанного с ним сетевого ресурса), поэтому вызов метода RemoveNetworkDrive помещается внутрь блока try конструкции try…catch языка JScript, которая позволяет обрабатывать такие ошибки:
try {
 //Отключаем сетевой диск
В WshNetwork.RemoveNetworkDrive(Drive);
} catch (e) { //Обрабатываем возможные ошибки
if (Рµ.number != 0) {
 //Выводим сообщение об ошибке
В IsError=true;
 Mess="Ошибка при отключении диска "+Drive + "nКод ошибки: "+
 е.number+"nОписание: " + е.description;
 WshShell.Popup(Mess, 0, "Отключение сетевого диска", vbCritical);
В }
}
Теперь в случае возникновения ошибки при работе метода RemoveNetworkDrive управление передастся внутрь блока catch, а в полях переменной-объекта е будет содержаться информация о произошедшей ошибке (е.number — числовой код ошибки, е.description — краткое описание ошибки); эта информация отображается в диалоговом окне (рис. 2.23).
Р РёСЃ. 2.23. Рнформация РѕР± ошибке, произошедшей РїСЂРё отключении РґРёСЃРєР° K:
Если же отключение диска K: прошло успешно, на экран выводится диалоговое окно с информацией об этом (рис. 2.24):
if (!IsError) { //Р’СЃРµ РІ РїРѕСЂСЏРґРєРµ
 Mess="Диск "+Drive+" отключен успешно";
 WshShell.Popup(Mess, 0, "Отключение сетевого диска", vbInformation);
}
Р РёСЃ. 2.24. Рнформация РѕР± успешном отключении РґРёСЃРєР° K:
Аналогичный блок try…catch используется и при подключении сетевого диска:
try {
 //Подключаем сетевой диск
В WshNetwork.MapNetworkDrive(Drive, NetPath);
} catch (e) {
 //Обрабатываем возможные ошибки
В if (e != 0) {
 //Выводим сообщение об ошибке
В В IsError=true;
 Mess="Ошибка при подключении диска " + Drive + " к " + NetPath+
  "nКод ошибки: "+е.number + "nОписание: "+е.description;
  WshShell.Popup(Mess, 0, "Подключение сетевого диска", vbCritical);
Если, например, пользователь, который подключает сетевой диск, не имеет соответствующих прав доступа к сетевому ресурсу, то на экран выведется диалоговое окно, изображенное на рис. 2.25.
Р РёСЃ. 2.25. Рнформация РѕР± ошибке, произошедшей РїСЂРё подключении РґРёСЃРєР° K:
Освобождение локального порта (метод RemovePrinterConnection), подключение сетевого принтера к этому порту (метод AddPrinterConnection) и обработка ошибок времени выполнения, которые могут возникнуть при этих действиях, производится в сценарии аналогичным образом.
Листинг 2.50. Отключение и подключение сетевых ресурсов (JScript)/********************************************************************/
/* РРјСЏ: MapResources.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                   */
/* Описание: Отключение и подключение сетевых дисков и принтеров   */
/********************************************************************/
//Объявляем переменные
var WshNetwork,WshShell,Drive,NetPath,Port,NetPrinter,Mess,IsError;
//Рнициализируем константы для диалоговых РѕРєРѕРЅ
var vbCritical=16,vbInformation=64;
Drive="K:";     //Буква диска
//NetPath="\\RS_NT_Server\d"; //Сетевой путь для подключения диска
NetPath="\\RS_NT_Server\d"; //Сетевой путь для подключения диска
Port="LPT1";  //Название локального порта
//Сетевой путь для подключения принтера
NetPrinter="\\104_Stepankova\HP";
//Создаем объект WshNetwork
WshNetwork = WScript.CreateObject("WScript.Network");
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
/************* Отключение сетевого диска ***********************/
IsError=false;
try {
 //Отключаем сетевой диск
В WshNetwork.RemoveNetworkDrive(Drive);
} catch (e) { //Обрабатываем возможные ошибки
В if (e != 0) {
 //Выводим сообщение об ошибке
В IsError=true;
 Mess="Ошибка при отключении диска "+Drive+"nКод ошибки: "+
  e.number+"nОписание: "+e.description;
 WshShell.Popup(Mess,0,"Отключение сетевого диска",vbCritical);
В }
}
if (!IsError)В {
В //Р’СЃРµ РІ РїРѕСЂСЏРґРєРµ
 Mess="Диск "+Drive+" отключен успешно";
 WshShell.Popup(Mess,0,"Отключение сетевого диска",vbInformation);
}
/************* Подключение сетевого диска ***********************/
IsError=false;
try {
 //Подключаем сетевой диск
В WshNetwork.MapNetworkDrive(Drive,NetPath);
} catch (e) { //Обрабатываем возможные ошибки
В if (e != 0) {
 //Выводим сообщение об ошибке
В IsError=true;
 Mess="Ошибка при подключении диска " + Drive + " к " + NetPath+
  "nКод ошибки: "+e.number+"nОписание: "+e.description;
 WshShell.Popup(Mess,0,"Подключение сетевого диска",vbCritical);
В }
}
if (!IsError)В {
В //Р’СЃРµ РІ РїРѕСЂСЏРґРєРµ
 Mess="Диск "+Drive+" успешно подключен к "+NetPath;
 WshShell.Popup(Mess,0,"Подключение сетевого диска",vbInformation);
}
/************* Освобождение локального порта ***********************/
IsError=false;
try {