Проблема с одним рег добавлением в командный файл - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть командный файл с двумя командами reg add.Оба, кажется, работают, но один будет отображаться в реестре в течение 5 секунд, а затем исчезнет.Я перепробовал все стили форматирования и не могу выбрать один из них.Вот два добавления reg, которые я использую:

 reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v CrashPlanTray /t REG_SZ /d C:\Users\%USERNAME%\AppData\Local\Programs\CrashPlan\electron\CrashPlanDesktop.exe --menubar --desktop=false --user.install

и

 reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v CrashPlanServiceUser /t REG_SZ /d C:\Users\%USERNAME%\AppData\Local\Programs\CrashPlan\CrashPlanService.vbs

Это первый CrashPlanTray, который не будет прилипать.

Я пыталсяэто добавляет \ перед значением данных и в конце значения данных.Он добавит его в реестр, но через несколько секунд это разочаровывает.

 reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v CrashPlanTray /t REG_SZ /d "\"C:\Users\%USERNAME%\AppData\Local\Programs\CrashPlan\electron\CrashPlanDesktop.exe\" --menubar --desktop=false --user.install

У меня были проблемы со стрельбой и я работал с этим уже несколько дней.Я могу заставить это работать и придерживаться из окна команды, но как только я помещаю это в пакетный файл, это больше не придерживается.Я мог бы использовать некоторую экспертную помощь в выяснении, почему это не будет придерживаться в реестре?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Первое, что я хотел бы сделать, потому что в местоположениях используются переменные окружения, это использовать REG_EXPAND_SZ вместо REG_SZ.

Я бы использовал обратную косую черту, чтобы затем избежать внутренних двойных кавычек и защитить местоположения, поскольку они могут содержать такие вещи, как пробелы.

Я бы установил общие строки в качестве значений в верхней части, чтобы упростить изменение и сокращение строк, а также, вероятно, использовал бы знаки вставки, ^ чтобы еще больше сократить строки для удобства чтения.

Наконец, если вы хотите запустить VBScript из ключа запуска реестра, вам действительно нужно запустить его из WScript.exeили CScript.exe.В моем примере ниже используется WSCript, но вы можете заменить его на CScript и любые необходимые параметры при необходимости.

@Set "Key=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
@Set "Loc=%%LocalAppData%%\Programs\CrashPlan"
@Reg Add "%Key%" /V "CrashPlanTray" /T REG_EXPAND_SZ /D^
 "\"%Loc%\electron\CrashPlanDesktop.exe\" --menubar --desktop=false --user.install" /F>Nul
@Reg Add "%Key%" /V "CrashPlanServiceUser" /T REG_EXPAND_SZ /D^
 "WScript \"%Loc%\CrashPlanService.vbs\"" /F>Nul
0 голосов
/ 16 февраля 2019

Я не знаю точно, что изменилось, но после полной деинсталляции и переустановки CrashPlan все снова работает.Теперь я могу запустить командные файлы, чтобы отключить и снова включить их, теперь они работают правильно.Ваши усилия не пропали даром, так как я использую фрагменты того, что вы предложили в моих исправленных пакетных файлах, и это делает их намного чище для чтения и работы.Спасибо за вашу помощь и терпение.

0 голосов
/ 14 февраля 2019

При первом добавлении reg попробуйте следующее:

reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v CrashPlanTray /t REG_SZ /d "\"%localappdata%\Programs\CrashPlan\electron\CrashPlanDesktop.exe\" --menubar --desktop=false --user.install"

Обратите особое внимание на двойные кавычки (начало и конец), содержащие полную строку в реестре, а также экранированные, содержащие путь (Я сократил этот путь для демонстрационных целей:

"\"%localappdata%\..\CrashPlanDesktop.exe\" --menubar --desktop=false --user.install"

Наконец, также обратите внимание, что мы можем использовать %localappdata% вместо C:\users\%username%\..

...