В Windows XP программно задайте файл Pagefile "Нет файла подкачки" на одном диске c:

Я пытаюсь написать приложение С#/.NET, которое оптимизирует жесткие диски для наших рабочих станций XP

  • Установите файл подкачки на "Нет файла подкачки"
  • Reboot
  • Запустите утилиту defrag для оптимизации данных и приложений.
  • Создать непрерывный файл страницы
  • Перезагрузите, запустите pagedefrag из Sysinternals

Я действительно борюсь с №1. Я удаляю следующий ключ: SYSTEM\CurrentControlSet\Control\Session Manager\Управление памятью \PagingFiles

После перезагрузки на панели управления системой отображается "Нет файла страницы", но c:\pagefile.sys все еще существует и используется в процессе SYSTEM, поэтому я не могу удалить его, и я не могу оптимизировать HD. Я попытался использовать PendingFileRenamingOperations, и это тоже бомбит. Я пробовал использовать WMI: Win32_PageFileSetting, но это позволяет вам устанавливать размеры (не ноль - по умолчанию - 2 МБ).

Конечно, если я сделаю шаги, описанные выше, это сработает.

Мне кажется, мне нужен API-запрос, чтобы это произошло.

Ответ 1

Посмотрите на Delete или методы DeleteEx класса Win32_PageFile:

Класс устарел, но поскольку вы говорите о Windows XP, возможно, он не был устаревшим тогда.

Ответ 2

Собственно, ошибка, которую я сделал, это удалить раздел реестра.

Мне нужно было установить значение многострочного значения на что-то вроде

rk.SetValue( "PagingFiles", новая строка [] {""}, RegistryValueType.MultiString)

Удачи!

Ответ 3

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

Я столкнулся с такими странностями, когда код запускается/появляется с WMI, но на самом деле ничего не делает, потому что где-то на заднем конце API 1 не было специального разрешения для учетной записи, запускающей код.

Уровни доверия часто также оказывают влияние.

Не думаю, что что-то еще очевидно и выделяется.

Ответ 4

Вы можете изменить реестр, чтобы изменить настройки файла подкачки.

Они хранятся в следующем разделе реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

PagingFiles Значение содержит значения в формате "PageFileLocation MinSize MaxSize" (т.е. "C:\pagefile.sys 1024 2048" ). Вы можете найти больше на этой статьи.