On Windows XP, programmatically set Pagefile to "No Paging File" on single c: drive
I'm trying to write a C#/.NET application that optimizes the hard drives for our XP workstations
- Set pagefile to "No paging file"
- Reboot
- Run a defrag utility to optimize the data and apps
- Create a contiguous page file
- Reboot, run pagedefrag from Sysinternals
I'm really struggling with #1. I delete the following key: SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles
Upon reboot, the System Control Panel shows "No page file", but c:\pagefile.sys still exists and its in use by the开发者_开发知识库 SYSTEM process so I can't delete it and I can't optimize HD. I tried using PendingFileRenamingOperations and that bombs out too. I tried using WMI: Win32_PageFileSetting, but that only lets you set sizes (not zero--defaults to 2MB).
Of course, if I do the manual steps outlined above, it works.
I think I need an API call to make this happen.
Look at Delete
or DeleteEx methods of the Win32_PageFile
class:
The class has been deprecated but since you're talking about Windows XP, maybe it wasn't deprecated then.
Actually, the mistake I made was delete the registry key.
What I had to do is set the multi-string value to something like
rk.SetValue("PagingFiles", new string[]{""}, RegistryValueType.MultiString)
Good luck!
You can modify registry in order to change pagefile settings.
They are stored in the following registry's key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PagingFiles
value contains values in the 'PageFileLocation MinSize MaxSize
' format (i.e. 'C:\pagefile.sys 1024 2048
') -- you can find more on that in this article.
精彩评论