Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Проверка наличия ветки реестра

Ответить
Настройки темы
VBS/WSH/JS - [решено] Проверка наличия ветки реестра

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый День!
Только начинаю осваивать vbs язык, задачка вроде простая, но никак не получается.
Необходимо найти ветку в реестре и если она есть, то внести изменения. Прошу помощи, за ранее спасибо
Код: Выделить весь код
Dim WshShell, objWMIService, verSoft, mkey2003, mkey2007, mkey2010

On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
mkey2003 = "HKCU\Software\Microsoft\Office\11.0\"
mkey2007 = "HKCU\Software\Microsoft\Office\12.0\"
mkey2010 = "HKCU\Software\Microsoft\Office\14.0\"

If mkey2003 = True Then
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\DoAging", "1", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\EveryDays", "35", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\ArchivePeriod", "24", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\ArchiveDelete", "0", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Outlook\Preferences\DeleteExpired", "0", "REG_DWORD"
        
        ElseIf  mkey2007 = True Then       
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\DoAging", "1", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\EveryDays", "35", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\ArchivePeriod", "24", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\ArchiveDelete", "0", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\12.0\Outlook\Preferences\DeleteExpired", "0", "REG_DWORD" 
 
 ElseIf mkey2010 = True Then

        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\DoAging", "1", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\EveryDays", "35", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\ArchivePeriod", "24", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\ArchiveDelete", "0", "REG_DWORD"
        WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Outlook\Preferences\DeleteExpired", "0", "REG_DWORD"

         End If

Отправлено: 18:43, 11-02-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата botkin1:
Необходимо найти ветку в реестре »
Какую? Зачем? Версия установленного Microsoft Office определяется совсем не так. К тому же, скажем, при установленном Office 2003 и пакете совместимости (типичное дело) наличествует как раздел 11.0
так и 12.0.

Отправлено: 19:12, 11-02-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вообще есть нормальный скрипт через WMI, который определяет версию Microsoft Office и нормально работает, но есть одно препятствие на ПЭВМ WMI - может быть не рабочий и следовательно изменения в реестр не запишет.
Поэтому пошли самым простым на наш взгляд способом ищем в реестра, вероятность наличия 2003 очень мала.
И очень хочется понять, что не правильно

Отправлено: 19:24, 11-02-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата botkin1:
но есть одно препятствие на ПЭВМ WMI - может быть не рабочий »
Простите, это как — «не рабочий»?

Отправлено: 20:05, 11-02-2017 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


"Не рабочий" - это значит служба работает, а при выполнении запроса выходит ошибка, либо ответ просто не получаешь.
И все таки хотелось понять почему не работает проверка условий?
У меня предположение, что в таком виде и не будет работать так как проверяется не одно значение на несколько условий.

Отправлено: 07:57, 12-02-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата botkin1:
И все таки хотелось понять почему не работает проверка условий? »
Проверка условий работает. Ровно так, как и заказывали.

Цитата botkin1:
"Не рабочий" - это значит служба работает, а при выполнении запроса выходит ошибка, либо ответ просто не получаешь. »
Какая именно ошибка? Какого именно запроса? Что значит «ответ просто не получаешь»?! С этим надо разбираться, а не отмахиваться.


Я предполагаю, что Вы хотели нечто такое:
Код: Выделить весь код
mkey2003 = WshShell.RegRead("HKCU\Software\Microsoft\Office\11.0\")
mkey2007 = WshShell.RegRead("HKCU\Software\Microsoft\Office\12.0\")
mkey2010 = WshShell.RegRead("HKCU\Software\Microsoft\Office\14.0\")
и:
Код: Выделить весь код
If Not VarType(mkey2003) = vbEmpty Then
	…
ElseIf Not VarType(mkey2007) = vbEmpty Then
	…
ElseIf Not VarType(mkey2010) = vbEmpty  Then
	…
End If
вместо того, что у Вас. Но, как я писал выше, данный алгоритм далеко не всегда отработает корректно. По целому ряду причин.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:34, 12-02-2017 | #6


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
С этим надо разбираться, а не отмахиваться
Я не отмахиваюсь и проблему решаем по мере возникновения, но когда парк машин более 2500 и сделать нужно быстро, разбираться с каждой просто нет времени.
Поставленная задача, как говорится "овчинка выделки не стоит", но руководство хочет.
Вы все верно поняли, перепробовал все варианты, но опыта нет вот и застрял.
Спасибо, Вам снова выручили

Отправлено: 12:40, 12-02-2017 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Проверка наличия ветки реестра

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Проверка наличия процесса botkin1 Скриптовые языки администрирования Windows 0 12-05-2016 07:33
CMD/BAT - проверка наличия файлов neprotiv Скриптовые языки администрирования Windows 0 04-04-2013 22:09
экспорт ветки реестра фотошопа koss Хочу все знать 6 03-07-2010 23:39
Права на ветки реестра. FerFel Microsoft Windows NT/2000/2003 10 25-01-2010 19:44
разрешения на ветки реестра maxtravilov Автоматическая установка Windows 2000/XP/2003 1 27-10-2005 21:44




 
Переход