2010-05-11 2 views
11

Sto cercando di scrivere un C#/NET applicazione che ottimizza i dischi rigidi per le nostre stazioni di lavoro di XPIn Windows XP, a livello di codice impostare file di paging su "No File di paging", a singolo disco C:

  1. Set file di paging. a "Nessun file di paging"
  2. Reboot
  3. eseguire un programma di utilità di deframmentazione per ottimizzare i dati e le applicazioni
  4. Creare un file contigui pagina
  5. Reboot, PageDefrag eseguito da Sysinternals

Sono davvero alle prese con # 1. Eliminare la seguente chiave: SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Gestione memoria \ PagingFiles

Al riavvio, il pannello di controllo del sistema mostra "Nessun file di paging", ma c: \ pagefile.sys esiste ancora ed è in utilizzare dal processo SYSTEM, quindi non posso eliminarlo e non posso ottimizzare l'HD. Ho provato a usare PendingFileRenamingOperations e anche le bombe. Ho provato a utilizzare WMI: Win32_PageFileSetting, ma questo consente di impostare solo dimensioni (non zero - valori predefiniti a 2 MB).

Ovviamente, se eseguo la procedura manuale descritta sopra, funziona.

Penso di aver bisogno di una chiamata API per farlo accadere.

+0

Sembra che il file di paging sia in uso per un altro ciclo di avvio. Al secondo riavvio il file non è più in uso. Questo è per Windows 7. – usr

risposta

4

Guarda Delete o DeleteEx metodi della classe Win32_PageFile:

La classe è stata sconsigliata, ma dal momento che si sta parlando di Windows XP, forse non è stata sconsigliata poi.

0

È possibile modificare il registro per modificare le impostazioni del file di paging.

Essi sono memorizzati nella seguente chiave del Registro di sistema:

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

PagingFiles valore contiene i valori nel formato 'PageFileLocation MinSize MaxSize' (cioè 'C:\pagefile.sys 1024 2048') - si possono trovare più su che in this articolo.

+0

In realtà, sto cercando di sbarazzarsi del file di paging (temporaneamente). So che c'è una chiamata WMI che fa quello che stai dicendo, ma XP dice che è un no no (impostazione min e max a zero) e resetta invece a 2MB. – NBPC77

+0

@ NBPC77: Probabilmente API limita la rimozione di tutti i file di pagina. Non ho un file di paging sul mio sistema (8 GB di RAM sono abbastanza) e il valore di 'PagingFiles' consiste di due righe vuote. – Regent

1

Sembra una cosa folle ma hai provato a utilizzare runas/richiedendo alcune autorizzazioni amministrative nel codice?

Ho riscontrato delle stranezze simili a questa in cui il codice viene eseguito/visualizzato con WMI, ma in realtà sembra non fare nulla perché da qualche parte nella parte posteriore dell'API 1 non era in esecuzione un'autorizzazione specifica per l'account che esegue il codice .

I livelli di fiducia spesso hanno anche un impatto.

Non riesco a pensare a nient'altro che è ovvio e si distingue.

2

In realtà, l'errore che ho fatto è stato eliminare la chiave di registro.

Quello che ho dovuto fare è impostare il valore multi-stringa qualcosa come

rk.SetValue ("PagingFiles", nuova string [] { ""}, RegistryValueType.MultiString)

Buona fortuna !