Тема: VBA: работа с файлом реестра
Добрый день . Устанавливаем на предприятии Автокад 2010 и его разновидности ( Механикал и Электрикал ) , поставить с помощью групповой политики и System Center , не представляется возможным из за кривости ЛИЦЕНЗИОННОГО дистрибутива . Требуется установить на 400 машин , так что в ручную в одно лицо ставить не очень приятно . В результате было принято решение ставить через антивирус Касперского с помощью встроенного в него распространителя собственных обновлений , и вуаля всё получилось и Автокад установлен . Теперь надо исправить парочку файлов реестра и можно трудиться . Решено было написать 2 скрипта и инструкцию пользователям для первоначальной настройки . Первый скрипт заменяет в файле реестра "userNNNNN" на "user(его порядковый номер ) казалось бы элементарно но упорно не получается .
Есть файл реестра: HK_CU_ACAD_EL_userNNNNN он лежит в D:\User_ws\
к нему применяется скриптConst OverwriteExisting = True
regfn="HK_CU_ACAD_EL_userNNNNN.reg"Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")tempFolder=WshShell.ExpandEnvironmentStrings("%Temp%")
tempFolder=tempFolder & "\"
'wscript.echo tempFolderuserprof=WshShell.ExpandEnvironmentStrings("%userprofile%")
'wscript.echo userproftargetFolder=WshShell.ExpandEnvironmentStrings("%APPDATA%") & "\Autodesk\AutoCAD Mechanical 2010\"
'wscript.echo targetFolderIf (objFSO.FolderExists(targetFolder)) Then
objFSO.CopyFile "D:\User_ws\" & regfn, tempFolder , OverwriteExistingConst ForReading = 1
Const ForWriting = 2reg_filename=tempFolder & regfn
reg_in="D:\\Documents and Settings\\userNNNNN"
reg_out=Replace(userprof,"\","\\")
'wscript.echo reg_in
'wscript.echo reg_outSet objFile = objFSO.OpenTextFile(reg_filename, ForReading)
strText = objFile.ReadAll
objFile.ClosestrNewText = Replace(strText, reg_in, reg_out)
Set objFile = objFSO.OpenTextFile(reg_filename, ForWriting)
objFile.WriteLine strNewText
objFile.Close'txtComm="regedit """ & reg_filename & """"
'WScript.Echo txtComm
'Return = WshShell.Run(txtComm, 1, true)
'WScript.Echo Return
'objFSO.DeleteFile(reg_filename)Скрипт анологичен скрипту который писался ранее для АВТОКАДА 2006 , там всё работает на ура .
в результате получается файл реестра который лежит в D:\Temp\ , но не корректный . но на исходный он совсем не похож
подскажите ламеру , не хочу ко всем машинам лично цепляться и за них это всё делать ....)