2010-05-11 4 views
11

Я пытаюсь написать C#/NET приложение, которое позволяет оптимизировать жесткие диски для наших рабочих станций XPВ Windows XP программно установить Pagefile на «Нет файла подкачки» на одном диске С

  1. Набор Pagefile. к «Нет файла подкачки»
  2. Reboot
  3. запустить программу дефрагментации для оптимизации данных и приложений
  4. Создать непрерывный файл подкачки
  5. Reboot, запустите PageDefrag от Sysinternals

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

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

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

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

+0

Похоже, файл подкачки используется для еще одного цикла загрузки. При второй перезагрузке файл больше не используется. Это для Windows 7. – usr

ответ

4

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

устарел класс, но так как вы говорите о Windows XP, может быть, это был не осуждаемых тогда.

0

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

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

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

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

+0

На самом деле, я пытаюсь избавиться от файла подкачки (временно). Я знаю, что есть WMI-вызов, который делает то, что вы говорите, но XP говорит, что это не no (установка min и max на ноль) и вместо этого сбрасывает его на 2MB. – NBPC77

+0

@ NBPC77: Возможно, API ограничивает удаление всех файлов страниц. У меня нет файла подкачки в моей системе (достаточно 8 ГБ ОЗУ), а значение 'PagingFiles' состоит из двух пустых строк. – Regent

1

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

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

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

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

2

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

То, что я должен был сделать, это установить значение нескольких строк на что-то вроде

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

Успехов !