1 (изменено: greg zakharov, 2011-11-21 14:14:56)

Тема: JScript: переход в указанный раздел реестра

Идея в общем-то стара, как мир, с помощью скрипта открыть нужную ветку реестра (что-то подобное regjump'у Руссиновича). Поковырявшись в справочнике по реестру, нашел ветку HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit, значение LastKey которой хранит запись о ветви последнего обращения. В общем, полагаю, не стоит разъяснять далее что к чему, замечу лишь, что в ходе экспериментов выяснилось недружелюбное отношение данного ключа к сокращениям вроде HKCU или HKLM.

var arg = WScript.Arguments;

if (arg.length != 1) {
  WScript.echo("Синтаксис: " + WScript.ScriptName + " <ключ>");
  WScript.echo("Пример: " + WScript.ScriptName + " HKCU\\Software\\Microsoft");
  WScript.Quit(1);
}
else {
  var wsh = WScript.CreateObject("WScript.Shell"),
      key = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\LastKey",
      jmp = ExpandHiveName(arg(0));

  if (jmp != null) {
    //заносим значение в реестр
    wsh.RegWrite(key, jmp, "REG_SZ");
    WScript.Sleep(100);
    //открываем реестр
    wsh.Run("regedit.exe");
  }
}

//получаем полное представление сокращений
function ExpandHiveName(param) {
  var itm = param.toUpperCase(), exp = /\w+/,
      res = exp.exec(itm), fix = RegExp.lastMatch,
      str;

  switch (fix) {
    case "HKCR":
      str = itm.replace(fix, "HKEY_CLASSES_ROOT"); break;
    case "HKCU":
      str = itm.replace(fix, "HKEY_CURRENT_USER"); break;
    case "HKLM":
      str = itm.replace(fix, "HKEY_LOCAL_MACHINE"); break;
    case "HKU":
      str = itm.replace(fix, "HKEY_USERS"); break;
    case "HKCC":
      str = itm.replace(fix, "HKEY_CURRENT_CONFIG"); break;
    default:
      WScript.echo("Праметр задан неверно или не поддерживается.");
  }

  return(str);
}

2 (изменено: Rom5, 2011-11-20 22:01:05)

Re: JScript: переход в указанный раздел реестра

А на Win-7 этот метод испытывали?
Потому как этот метод записи в "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey" уже предлагался ранее (http://forum.script-coding.com/viewtopi … 4534#p4534), но у меня он работал только на WinXP...

WBR. Roman

3

Re: JScript: переход в указанный раздел реестра

greg zakharov пишет:

...
    case "HKCC":
      str = itm.replace(fix, "HKEY_CURRENT_COBFIG"); break;
...

Похоже на очепятку, по идее - "HKEY_CURRENT_CONFIG"

WBR. Roman

4 (изменено: greg zakharov, 2011-11-21 14:14:31)

Re: JScript: переход в указанный раздел реестра

Rom5 пишет:

Похоже на очепятку...

Так и есть. Спасибо за указание на ошибку! Сейчас исправлю.

Rom5 пишет:

А на Win-7 этот метод испытывали?

Честно, нет. На работе установлена именно ХР, поэтому скрипт писался главным образом под нее, а запостил его я здесь именно по причине того, что хотелось бы услышать конструктивные идеи и предложения по поводу его - скрипта, - улучшения. У меня, например, есть идея сделать предварительную проверку на версию системы, а далее тот же метод применять к соответсвующим веткам реестра ОС.