Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Скрипт применения твиков в зависимости от объема памяти. Как? (http://forum.oszone.net/showthread.php?t=164048)

Pozia 20-01-2010 00:21 1324730

Скрипт применения твиков в зависимости от объема памяти. Как?
 
Подскажите пожалуйста скрипт который бы вносил в реестр определенный твик в зависимости от установленной оперативной памяти в компе.

Допустим если памяти имеется 0-500 то такой то твик, 500-1000 - такой то... 1000-1500 - такой то... 1500-2000 - такой то.... 2000 и более - такой то....

Пример одного из твиков:

Код:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"PagingFiles"=hex(7):43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\
  00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,35,00,30,00,30,00,20,00,31,00,\
  35,00,30,00,30,00,00,00,00,00


semiono 20-01-2010 01:12 1324752

1. По-моему windows это сама делает, однако именно её регламент я не знаю.
2. Надо сразу же определиться в том, что x86 не видит более 3.5~ Гб, а сервера с ключём /3Gb может и видят.
3. и нижний предел тоже можно прикинуть, скажем 128мб, ибо сейчас адекватно не бывает ниже :)
offtop:
Pozia, мне нравиться, что здесь тоже 00,00,00\ байты с чем я сам и борюсь, хотя каждому своё :)

Pozia 20-01-2010 07:34 1324853

Цитата:

Цитата semiono
1. По-моему windows это сама делает, однако именно её регламент я не знаю. »

криво делает, не так как нужно
Цитата:

Цитата semiono
2. Надо сразу же определиться в том, что x86 не видит более 3.5~ Гб, а сервера с ключём /3Gb может и видят. »

знаю
Цитата:

Цитата semiono
3. и нижний предел тоже можно прикинуть, скажем 128мб, ибо сейчас адекватно не бывает ниже »

все бывает

kaster 20-01-2010 09:37 1324906

Код:

$a = MemGetStats()
Select
        Case $a[1] <= 500
                RegWrite($twik1)
        Case 500 < $a[1] <= 1000
                RegWrite($twik2)
        Case 1000 < $a[1] <= 2000
                RegWrite($twik3)
        Case ELSE
                RegWrite($twik4)
EndSelect


Pozia 21-01-2010 00:15 1325588

kaster, неверно память определяет. У меня 4 гига а выполняется RegWrite($twik2)

Правда я так записал:

Код:

$a = MemGetStats()
Select
        Case $a[1] <= 500
                RunWait("REGEDIT /S 1.reg")
        Case 500 < $a[1] <= 1000
                RunWait("REGEDIT /S 2.reg")
        Case 1000 < $a[1] <= 2000
                RunWait("REGEDIT /S 3.reg")
        Case ELSE
                RunWait("REGEDIT /S 4.reg")
EndSelect


kaster 21-01-2010 01:10 1325610

ммм.... потому что я дурак, написал за 3 мин по наитию, и в голове все смешалось :)
надо так
Код:

$a = MemGetStats()
Select
        Case $a[1] <= 500
                RunWait("REGEDIT /S 1.reg")
        Case 500 < $a[1] AND $a[1] <= 1000
                RunWait("REGEDIT /S 2.reg")
        Case 1000 < $a[1] AND $a[1] <= 2000
                RunWait("REGEDIT /S 3.reg")
        Case ELSE
                RunWait("REGEDIT /S 4.reg")
EndSelect


saavaage 01-08-2010 02:20 1464382

Pozia, один нюанс - память измеряется в KB, поэтому все значения $a[1] надо умножить на 1024 ...

Просто так для проформы прикладываю свой вариант скрипта по автоматическому заданию размера файла подкачки (может пригодится народу):
Код:

$a = MemGetStats()
Select
        Case $a[1] <= 261963
                RunWait(RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "c:\pagefile.sys 512 512"))
        Case 261963 < $a[1] AND $a[1] <= 523926
                RunWait(RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "c:\pagefile.sys 1024 1024"))
        Case 523926 < $a[1] AND $a[1] <= 1047852
                RunWait(RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "c:\pagefile.sys 1536 1536"))
        Case ELSE
                RunWait(RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "c:\pagefile.sys 2048 2048"))
EndSelect


seriych 07-08-2010 14:29 1468833

Если отключить файл подкачки, то ключ принимает значение: "PagingFiles"=hex(7):00,00,00,00
Через батник это задается так:
Код:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v testKeyBat /t REG_MULTI_SZ /d "\0" /f
А через AutoIt у меня получается либо hex(7):00,00 в таком варианте:
Код:

RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "")
либо hex(7):00,00,00,00,00,00 в таких случаях:
Код:

RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", @LF)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "" & @LF)
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "" & @LF & "")

А как же задать hex(7):00,00,00,00 ?

P.S.
saavaage, наверное, лучше использовать @HomeDrive & "\pagefile.sys" вместо "C:\pagefile.sys"

saavaage 08-08-2010 00:51 1469106

seriych, согласен с
Цитата:

Цитата seriych
лучше использовать @HomeDrive & "\pagefile.sys" вместо "C:\pagefile.sys" »

, но дело в том, что файл подкачки не обязательно надо располагать на системном разделе. Есть мнения, что его лучше, вообще, кидать на другой жесткий диск (для улучшения производительности)...

seriych 08-08-2010 01:09 1469113

saavaage,
Вообще мнений есть много :)
И что на системный лучше не располагать, и на диск с торрентами... ИМХО это имеет смысл, если мы файл подкачки кинем на другой ФИЗИЧЕСКИЙ диск. А другой логический- один черт.
А @HomeDrive лучше использовать, хотябы потому что он заведомо существует, в отличие от диска C :)
Ну а как добавить ключик не в курсе? А то пока так использую:
Код:

ShellExecute(@ComSpec, '/c reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v PagingFiles /t REG_MULTI_SZ /d "\0" /f', '', '', @SW_HIDE)
Работает, конечно, но хотелось бы узнать, как стандартным RegWrite сделать.
На всякий случай, зачем это нужно:
1) на некоторых нетбуках 2-4ГБ диски и файл подкачки лучше отрубить, иначе вечные жалобы на нехватку места.
2) Есть мнение, что лучше сначала обнулить файл подкачки, а после перезагрузки задать фиксированный, чтобы он был менее фрагментирован.

saavaage 08-08-2010 13:46 1469298

seriych, см. http://forum.oszone.net/thread-174885.html сама прога здесь http://forum.oszone.net/thread-124374.html

хотя я бы не загонялся и делел очиску через
Код:

RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management", "PagingFiles", "REG_MULTI_SZ", "")

seriych 08-08-2010 15:21 1469353

saavaage,
Ну не просто так же винда ставит не такое значение.

saavaage 08-08-2010 16:45 1469398

seriych, если есть результат, значит все ОК, имхо. В гугле искал, ничего путного не нашел на эту тему...


Время: 03:32.

Время: 03:32.
© OSzone.net 2001-