Назад | Перейти на главную страницу

Обновление установленного программного обеспечения групповой политики без необходимости выхода из системы

Наш отдел ИТ-поддержки выпускает внутренний программный продукт, который я пишу с помощью групповой политики.

Можно ли принудительно установить обновление определенного программного обеспечения групповой политики, не предлагая пользователям выйти из системы и снова войти в систему на своих машинах?

Программное обеспечение невозможно установить / обновить, если пользователь не перезагрузит свой компьютер (объекты «Компьютеры» в GPO применяются до того, как пользователь сможет войти в систему). Может быть, Vista сможет это сделать, я не уверен, но с XP вам действительно нужно перезагружаться.

В командной оболочке вы можете запустить

gpupdate / force

который (как предполагает команда) принудительно обновит групповую политику. Его также можно настроить для обновления политики пользователя или компьютера с помощью переключателя.

/ target: компьютер

или

/ target: пользователь

Для Win 2003:

gpupdate /force /target:computer

Для Win 2000:

secedit /refreshpolicy machine_policy /enforce

Не уверен насчет XP, но вы можете попробовать оба

Это обман по сравнению с вашим вопросом, но вы можете использовать psexec для удаленной установки пакета на компьютеры, не прерывая активности пользователей. Psexec от Sysinternals (сейчас Microsoft) бесплатно

Возможно создание задачи расписания для пользователей, и эта задача запускает vbscript или что-то еще для обновления приложения. Сценарий должен проверить версию исполняемого файла предыдущей замены или запустить задачу обновления.

    On Error Resume Next
DIM fso    
Dim version
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell") 
x86=wshShell.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%")&"\Cisco Systems\Cisco Jabber\CiscoJabber.exe"
x64=wshShell.ExpandEnvironmentStrings("%PROGRAMFILES%")&"\Cisco Systems\Cisco Jabber\CiscoJabber.exe"
If (fso.FileExists(x86) or fso.FileExists(x64)) Then
  version= CreateObject("Scripting.FileSystemObject").GetFileVersion(x86)
  if (strcomp(version,"",1)=0) then
    version= CreateObject("Scripting.FileSystemObject").GetFileVersion(x64)
    'Wscript.echo "x64"
  end if
  'Wscript.Echo version & "  en x86"
  if (strcomp(version,"11.5.1.29337",1)=0) then
    'Wscript.Echo "Tiene la ultima version"
  else

    'Wscript.Echo "Updating"
    WshShell.Run "msiexec.exe /I ""\\server\sharedfolder\CiscoJabberSetup.msi"" /quiet"

  end if
Else
  'WScript.Echo("Install as new app")
  'WshShell.Run  "msiexec.exe /I ""\\server\sharefolder\CiscoJabberSetup.msi"" /quiet"

End If
WScript.Quit()