PageFile VBS для систем Vista и Win7

Windows 7 Box, вход в домен, пакет администратора, миниатюры панели задач, планировщик задач, панель предварительного просмотра, Windows 7, тема Chrome, кэш иконок, общие ресурсы администратора, установка принтера, диски

Мой хороший друг написал очень маленький vbscript для обработки создания / удаления / модификации файла подкачки в системах Vista / Win7 (так как PageFileConfig.vbs не существует в папке входящих, и у него не было возможности обрабатывать некоторые ситуации что может возникнуть во время настройки), и в конечном итоге это превратилось в это.

Скрипт может работать в системе Windows XP / 2003, но он еще не протестирован.

Он думает, что это сэкономит кому-то время, если в этом будет необходимость, поэтому вот оно:

'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ '//' // ИМЯ: setpagefile. vbs '//' // Оригинал: http://www.cluberti.com/blog '// Последнее обновление: 16 июня 2010 г.' // '// Комментарий: пример файла VBS для использования при настройке файла подкачки в Windows' // '// ПРИМЕЧАНИЕ: при условии, как есть - использование этого источника предполагает, что вы // очень мало знакомы с используемым языком vbscript и // инструментами, используемыми для создания и отладки этого файла. '//' // Другими словами, если вы сломаете его, вы сохраните кусочки. '//' // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Dim strComputer, strPageFileSizeInput, strPageFileNameInput, strInput Dim objWMIService, objStaticPageFileItem, objDynamicPageFileItem, objShellApp Dim colStaticPageFileItems, colDynamicPageFileItems, isRunning, execOutput, gErrData, bRebootNeeded, bNoStaticPageFile, bNoPageFile '// Убедитесь, что Cscript является двигатель, используемый для запуска этого сценария: RunMeWithCScript () On Error Resume Next' // Конфигурируем наши переменные: strComputer = "." bRebootNeeded = False bNoStaticPageFile = True bNoPageFile = True Установить objShellApp = CreateObject ("WScript.Shell") Установить objWMIService = GetObject ("winmgmts: \\"  strComputer  "\ root \ CIMV2") '// Win32_PageFile устарел - он по-прежнему (в основном) работает, но Win32_PageFileSetting не устарел, поэтому используйте следующее: Set colStaticPageFileItems = objWMIService.ExecQuery ("SELECT * FROM Win32_PageFileSetFileSetIm") = objWMIService.ExecQuery ("SELECT * FROM Win32_PageFileUsage" ,, 48) '// Выполнение подпрограммы ChangePagingFile: ChangePagingFile ()' // Проверка выполнения ChangePagingFile () и обработка, когда установлено «управляемая система», или файл подкачки отсутствует существует: если bRebootNeeded = True, то RebootSystem () Else '// Не удается использовать WMI для создания файла подкачки, когда он «управляемый системой» или его не существует, - обработать это условие: если bNoStaticPageFile = True, то CheckForDynamicPagingFile () If bNoPageFile = False Then WScript.Quit Иначе, если bNoPageFile = True, то WScript.Echo "Файл подкачки не найден". WScript.Echo "" strPageFileNameInput = UserInput ("Введите имя нового файла подкачки (полный путь и имя файла) - оставьте пустым, чтобы использовать C: \ pagefile.sys:") strPageFileSizeInput = UserInput ("Введите размер нового файла подкачки (в МБ) - оставьте пустым сохранить систему без файла подкачки: ") '// Проверьте, не оставил ли пользователь ввод пустым, в противном случае настройте файл подкачки: If Not strPageFileSizeInput =" "Then If strPageFileNameInput =" "Then strPageFileNameInput =" C: \ pagefile.sys "End If WScript.Echo" Новый файл подкачки будет: "  strPageFileNameInput WScript.Echo "Новый размер файла подкачки будет:"  strPageFileSizeInput  "MB" bNoStaticPageFile = False '// Изменить реестр, чтобы добавить информацию о файле подкачки: objShellApp.Exec ("reg add", "HKLM \ System \ CurrentControlSet \ Control \ Диспетчер сеансов \ Управление памятью" "/ v PagingFiles / t REG_MULTI_SZ / d «»»  strPageFileNameInput  ""  strPageFileSizeInput  ""  strPageFileSizeInput  "" "/ f") '// Проверьте возврат, чтобы убедиться, что мы добились успеха - в противном случае, сообщите пользователю, почему мы этого не сделали: Если не Err.Number = 0, то gErrData = gErrData  vbCrLf  «Ошибка записи в реестр - причина:»  Err.Number  "-"  Err.Description WScript.Echo gErrData Err.Clear Else WScript.Echo "Редактирование реестра для добавления"  strPageFileNameInput  "как размер"  strPageFileSizeInput  «МБ был успешным». bRebootNeeded = True End If '// Если мы внесли изменения, которые были успешными, нам нужно перезагрузить компьютер, иначе ничего не делать: если bRebootNeeded = True, то RebootSystem () Else WScript.Echo "Не внесены изменения, требующие перезагрузки. Выход сценарий «. End If Else WScript.Echo "Вы решили продолжить без файла подкачки. Выход из сценария." End If Else WScript.Echo "Не внесены изменения, требующие перезагрузки. Выход из сценария." End If End If End If End Sub Sub ChangePagingFile () Для каждого objStaticPageFileItem В colStaticPageFileItems '// Есть статический файл подкачки - используйте WMI для внесения изменений: bNoStaticPageFile = False bNoPageFile = False WScript.Echo "-" WScript.Echo "Current Сведения о файле страницы "WScript.Echo" - "WScript.Echo" Имя: "  objStaticPageFileItem.Name WScript.Echo "InitialSize:"  objStaticPageFileItem.InitialSize WScript.Echo "MaximumSize:"  objStaticPageFileItem.MaximumSize WScript.Echo "" '// Получить ввод пользователя: strInput = UserInput ("Введите новый размер файла подкачки (в МБ) - оставьте пустым, чтобы удалить существующий файл подкачки:")' // Если пользователь ввел значение, настройте новый размер файла подкачки: Если не strInput = "" Тогда WScript.Echo "Новый размер файла подкачки будет:"  strInput  "MB" WScript.Echo "" objStaticPageFileItem.InitialSize = strInput objStaticPageFileItem.MaximumSize = strInput objStaticPageFileItem.Put_ bRebootNeeded = True WScript.Echo "-" WScript.Echo "Новые данные PageFile" - WScript.cho.E " Название:                "  objStaticPageFileItem.Name WScript.Echo "InitialSize:"  objStaticPageFileItem.InitialSize WScript.Echo "MaximumSize:"  objStaticPageFileItem.MaximumSize WScript.Echo "" WScript.Echo "Для того, чтобы это изменение вступило в силу, необходима перезагрузка." '// Если пользователь оставил поле ввода пустым, удалите файл подкачки - обратите внимание, что Delete и DeleteEx из Win32_PagingFile устарели, и' // пока они возвращают 0 в Windows 7, они фактически не удаляют файл подкачки. Вместо этого используйте reg add, так как он работает просто отлично: Else WScript.Echo "Удаление файла подкачки:"  objStaticPageFileItem.Name objShellApp.Exec ("reg add" "HKLM \ System \ CurrentControlSet \ Control \ Диспетчер сеансов \ Управление памятью" "/ v PagingFiles / t REG_MULTI_SZ / d" "" "/ f") '// Проверить возврат к убедитесь, что у нас получилось - в противном случае сообщите пользователю, почему мы этого не сделали: если не Err.Number = 0, то gErrData = gErrData  vbCrLf  «Ошибка записи в реестр - причина:»  Err.Number  "-"  Err.Description WScript.Echo gErrData Err.Clear Else WScript.Echo "Редактирование реестра для удаления"  objStaticPageFileItem.Name  " Был успешен." bRebootNeeded = True End If End If Next End Sub Sub CheckForDynamicPagingFile () Для каждого objDynamicPageFileItem В colDynamicPageFileItems '// Существует файл подкачки - используйте WMI для внесения изменений: bNoPageFile = False WScript.Echo "Файл подкачки настроен для" Управляемый системой размер " "WScript.Echo" "WScript.Echo" - "WScript.Echo" Сведения о текущем файле подкачки "WScript.Echo" - "WScript.Echo" Имя: "  objDynamicPageFileItem.Name WScript.Echo "Size:"  objDynamicPageFileItem.AllocatedBaseSize WScript.Echo "Текущее использование:"  objDynamicPageFileItem.CurrentUsage WScript.Echo "" WScript.Echo "" strPageFileNameInput = UserInput ("Введите имя нового файла подкачки (полный путь и имя файла) - оставьте пустым, чтобы использовать C: \ pagefile.sys:") strPageFileSizeInput = UserInput ("Введите новый файл страницы размер (в МБ) - оставьте пустым, чтобы удалить файл подкачки: ") '// Проверьте, не оставил ли пользователь ввод пустым, в противном случае настройте файл подкачки: If Not strPageFileSizeInput =" "Then If strPageFileNameInput =" "Then strPageFileNameInput = "C: \ pagefile.sys" End If WScript.Echo "Новый файл подкачки будет:"  strPageFileNameInput WScript.Echo "Новый размер файла подкачки будет:"  strPageFileSizeInput  "MB" bNoStaticPageFile = False '// Изменить реестр, чтобы добавить информацию о файле подкачки: objShellApp.Exec ("reg add", "HKLM \ System \ CurrentControlSet \ Control \ Диспетчер сеансов \ Управление памятью" "/ v PagingFiles / t REG_MULTI_SZ / d «»»  strPageFileNameInput  ""  strPageFileSizeInput  ""  strPageFileSizeInput  "" "/ f") '// Проверьте возврат, чтобы убедиться, что мы добились успеха - в противном случае, сообщите пользователю, почему мы этого не сделали: Если не Err.Number = 0, то gErrData = gErrData  vbCrLf  «Ошибка записи в реестр - причина:»  Err.Number  "-"  Err.Description WScript.Echo gErrData Err.Clear Else WScript.Echo "Редактирование реестра для добавления"  strPageFileNameInput  "как размер"  strPageFileSizeInput  «МБ был успешным». bRebootNeeded = True End If '// Если мы внесли изменения, которые были успешными, нам нужно перезагрузить компьютер, иначе ничего не делать: если bRebootNeeded = True, то RebootSystem () WScript.Quit Else WScript.Echo "Никаких изменений, которые требуют перезагрузка. Выход из скрипта. " WScript.Quit End If '// Если пользователь оставил поле ввода пустым, удалите файл подкачки - обратите внимание, что Delete и DeleteEx из Win32_PagingFile устарели, и' // пока они возвращают 0 в Windows 7, они на самом деле не удалите файл подкачки. Вместо этого используйте reg add, так как он работает просто отлично: Else WScript.Echo "Удаление файла подкачки:"  objDynamicPageFileItem.Name objShellApp.Exec ("reg add" "HKLM \ System \ CurrentControlSet \ Control \ Диспетчер сеансов \ Управление памятью" "/ v PagingFiles / t REG_MULTI_SZ / d" "" "/ f") '// Проверить возврат к убедитесь, что у нас получилось - в противном случае сообщите пользователю, почему мы этого не сделали: если не Err.Number = 0, то gErrData = gErrData  vbCrLf  «Ошибка записи в реестр - причина:»  Err.Number  "-"  Err.Description WScript.Echo gErrData Err.Clear Else WScript.Echo "Редактирование реестра для удаления"  objDynamicPageFileItem.Name  " Был успешен." bRebootNeeded = True End If End If Next End Sub Sub RebootSystem () WScript.Echo "Система перезагрузится через 5 секунд ..." Установите isRunning = objShellApp.Exec ("shutdown / r / t 5 / f / dp: 2: 4 ") '// Пока работает shutdown.exe, подождите: Do Пока isRunning.Status = 0 WScript.Sleep 100 execOutput = isRunning.StdOut.ReadAll Loop End Sub Функция UserInput (strInput) WScript.StdOut.Write strInput  "" UserInput = WScript.StdIn.ReadLine Конечная функция при ошибке Перейти к 0 Sub RunMeWithCScript () Dim ScriptEngine, engineFolder, Args, arg, scriptName, argString, scriptCommand ScriptEngine = UCase (Mid (WScript.FullName, InstrRev (WScript.Full) \ ") + 1)) engineFolder = Left (WScript.FullName, InstrRev (WScript.FullName," \ ")) argString =" "If ScriptEngine =" WSCRIPT.EXE ", то затем установите Dim Shell Shell = CreateObject (" WScript.Shell ") Установите Args = WScript.Arguments для каждого аргумента в аргументах, если InStr (arg," ")> 0, то arg =" "" "  Arg  "" "" ArgString = argString  ""  Arg Next scriptCommand = "cmd.exe / k"  engineFolder  "cscript.exe" ""  WScript.ScriptFullName  «» «»  argString Shell.Run scriptCommand, False WScript.Quit Остальное Выход Sub End Если End Sub

Cluberti.com

Ссылка на основную публикацию
Adblock
detector