Скрипт по добавлению списка баз данных при входе в систему!
Есть скритп который при входе системы должен запускаться и добавлть список баз 1С-ки в реестр!
Только вот что то он не срабатывает никак! Я в скриптах ничего не понимаю! Помогите его запустить, пожалуйста! |
// Скрипт для регистрации баз 1С 7.7
// (с)Zhurba var IniFileName = "\\\\DEN\\Bases\\1c77bases.ini"; var RegFileName = "1c77bases.reg"; var str1C_Reg = "\\Software\\1C\\1Cv7\\7.7\\Titles"; var wsh = WScript.CreateObject("WScript.Shell"); var UserName = WScript.CreateObject("WScript.Network").UserName; var fso = WScript.CreateObject("Scripting.FileSystemObject") ; var RegFileName = wsh.ExpandEnvironmentStrings("%Temp%")+"\\"+RegFil eName; //================================================== =============== function echo(text) {return WScript.echo(text);} function trim(S) {return S.replace(/^ +|[ \t\f\n\r\v]+$/g,"");} //================================================== =============== function getBases(ini) { //echo(ini); posBases = ini.search(/\[Bases\]/); if(posBases<0) return null; posUsers = ini.search(/\[Users\]/); if(posUsers<0) throw new Error("reg1с77bases.ERR: can't find USERS partition"); if(posUsers<posBases) throw new Error("reg1с77bases.ERR: USERS partition befor BASES"); var arrBaseRecs = ini.slice(posBases+7,posUsers).split(/[\f\n\r\v]/); //echo(arrBaseRecs); //ассоциативный массивчик для баз var arrBases = WScript.CreateObject("Scripting.Dictionary"); if(arrBaseRecs!=null) while(arrBaseRecs.length) { var strBaseRec = trim(arrBaseRecs.shift()); if(!strBaseRec.length) continue; var arrBaseRec = strBaseRec.split(/=/); if(arrBaseRec==null) continue; if(arrBaseRec.length!=3) continue; var base = trim(arrBaseRec[0]); //echo("@"+base+"@"); if(arrBases.Exists(base)) arrBases.Remove(base); arrBases.Add(base,trim(arrBaseRec[1])+"="+trim(arrBaseRec[2])); } return arrBases; } //================================================== =============== function getUserBases(ini) { //Ищем раздел [Users] var U_list = ini.match(/\[Users\](.|\s)*/g); if(U_list==null) throw new Error("reg1с77bases.ERR: Can't find USERS partition"); if(U_list.length>1) throw new Error("reg1с77bases.ERR: too mach USERS partitions"); //echo(U_list[0]); //Ищем все записи по юзеру UsersName var arrUserRecs = U_list[0].match(RegExp(UserName+"(.*|\s*)","g")); //echo(arrUserRecs.length+":\n"+arrUserRecs); var arrUserBases = new Array(); if(arrUserRecs!=null) while(arrUserRecs.length) { var strUserRec = trim(arrUserRecs.shift()); if(!strUserRec.length) continue; var arrUserRec = strUserRec.split(/=/); if(arrUserRec==null) continue; if(arrUserRec.length==2) arrUserBases.push(trim(arrUserRec[1])); else if(arrUserRec.length==3) arrUserBases.push(trim(arrUserRec[1])+"="+trim(arrUserRec[2])); } return arrUserBases; } //================================================== =============== function main() { //Заливаем все из файла (списки баз для юзеров) if(!fso.FileExists(IniFileName)) throw new Error("reg1с77bases.ERR: ini-file with StartList not found"); var inif = fso.OpenTextFile(IniFileName,1); var ini = inif.Readall(); inif.Close(); //Читаем общий список баз из раздела [Bases] var Bases = getBases(ini); //echo((new VBArray(Bases.Keys())).toArray()); //Читаем список баз для юзера UserName из раздела [Users] var UserBases = getUserBases(ini); //echo(UserBases); //Обрабатываем полученный список, добавляем базы в реестр if(UserBases.length) { //создаем reg-файл var rf = fso.CreateTextFile(RegFileName); rf.WriteLine("Windows Registry Editor Version 5.00\n\n[HKEY_CURRENT_USER"+str1C_Reg+"]"); while(UserBases.length) { var base = UserBases.shift(); if(base=="<CLEAR>") try {wsh.RegDelete("HKCU"+str1C_Reg+"\\");} catch (err){} else { if(Bases.Exists(base)) rf.WriteLine(Bases.Item(base)); else rf.WriteLine(base); } } rf.Close(); wsh.Exec("regedit /s "+RegFileName); }; } //================================================== =============== //main(); try {main();} catch (err) {WScript.echo(err.message);} |
А вот инишник которому обращается этот скрипт и от куда берется список баз
[Bases] ЗП2009 = "\\\\Den\\Bases\\Тюмень_ЗП_2009\\"="Тюм ень_ЗП_2009" [Users] //Зарплата //Администратор Администратор = ЗП2009 Администратор = "\\\\Den\\Bases\\Тюмень_ЗП_2009_2\\"="Тю мень_ЗП_2009_2" |
не по теме. в прямом и переносном смысле. не та ветка форума и как-бы вообще не тот форум.
|
Часовой пояс GMT +3, время: 14:29. |