Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запуск Bat файла через %APPDATA%

Ответить
Настройки темы
CMD/BAT - [решено] Запуск Bat файла через %APPDATA%

Новый участник


Сообщения: 4
Благодарности: 1

Профиль | Отправить PM | Цитировать


Если вызывать из коммандной строки
D:\Users\User\AppData\Roaming\callback\callback.bat +74955555555
%APPDATA%\callback\callback.bat +74955555555
все работает

Если вазывать из браузера по tel:+74955555555
Запись в реестре Работает
[HKEY_CURRENT_USER\Software\Classes\tel\shell\open\command]
@="D:\\Users\\User\\AppData\\Roaming\\callback\\callback.bat %1"


Запись в реестре Не работает
[HKEY_CURRENT_USER\Software\Classes\tel\shell\open\command]
@="%appdata%\\callback\\callback.bat %1"

Вопрос к знатокам, как решить данную проблему.
Как запустить именно через %appdata%

Отправлено: 15:22, 04-02-2021

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


наверное так:
Код: Выделить весь код
@="\"%AppData%\\MyPath\\MyDir\\myFilre.exe\" \"%1\""

Последний раз редактировалось alpap, 04-02-2021 в 21:54.


Отправлено: 21:00, 04-02-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 1

Профиль | Отправить PM | Цитировать


Идея зачет, но неработает.
Не отрабатываються такие переменные как %APPDATA% %USERPROFILE%, только прямой путь до файла.
Есть еще идеии...

Отправлено: 11:09, 05-02-2021 | #3


Новый участник


Сообщения: 4
Благодарности: 1

Профиль | Отправить PM | Цитировать


Сам спросил сам ответил

По умолчанию запись в реестре REG_SZ, а надо REG_EXPAND_SZ

[HKEY_CURRENT_USER\Software\Classes\tel\shell\open\command]
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,63,00,61,\
00,6c,00,6c,00,62,00,61,00,63,00,6b,00,5c,00,63,00,61,00,6c,00,6c,00,62,00,\
61,00,63,00,6b,00,2e,00,62,00,61,00,74,00,20,00,25,00,31,00,00,00

Человеко понятный вид IMG
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:30, 05-02-2021 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Prochor:
а надо REG_EXPAND_SZ »
Именно так.

Отправлено: 13:51, 05-02-2021 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


а почему через реестр получается так:
Код: Выделить весь код
hex(2):25,00,61,00,70,00,70,00,64,00,61,00,74,00,61,00,25,00,5c,00,63,00,61,00,6c,00,6c,00,62,00,61,00,63,00,6b,00,5c,00,63,00,61,00,6c,00,6c,00,62,00,61,00,63,00,6b,00,2e,00,62,00,61,00,74,00,20,00,25,00,31,00,00,00
а с помощью pwsh
Код: Выделить весь код
$text="%appdata%\callback\callback.bat %1"
foreach ($i in $text.ToCharArray()) {
  $hex+=[System.String]::Format("{0:X2}"+",00,", [System.Convert]::ToUInt32($i))
}
"hex(2):"+$hex > f.txt
так:
Код: Выделить весь код
hex(2):25,00,61,00,70,00,70,00,64,00,61,00,74,00,61,00,25,00,5C,00,63,00,61,00,6C,00,6C,00,62,00,61,00,63,00,6B,00,5C,00,63,00,61,00,6C,00,6C,00,62,00,61,00,63,00,6B,00,2E,00,62,00,61,00,74,00,20,00,25,00,31,00,
почему короче на "00,00" и на что это может влиять? Или надо всегда дописывать: "hex(2):"+$hex+"00,00" > f.txt

Последний раз редактировалось alpap, 05-02-2021 в 15:37.


Отправлено: 15:24, 05-02-2021 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


alpap, насколько я понимаю, требуется C-шный терминатор строк \0, он же — 0x00, символ с кодом 0. Отсюда и появляются два «лишних» нуля (,00,00) в конце файла реестра.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:35, 05-02-2021 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


но ни на что это не влияет, если так именно делать, а не через реестр?
проверил на нескольких разных строках, вывод такой же: через реестр есть эти две группы нулей, через pwsh нет
так что можно дописывать, тогда вывод идентичный получается.

Последний раз редактировалось alpap, 05-02-2021 в 15:47.


Отправлено: 15:39, 05-02-2021 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


alpap, терминатор обязателен — Registry Value Types - Win32 apps | Microsoft Docs:
Цитата:

The following registry value types are defined in Winnt.h


REG_EXPAND_SZ

A null-terminated string that contains unexpanded references to environment variables (for example, "%PATH%"). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:25, 05-02-2021 | #9


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Iska:
терминатор обязателен »
видимо в конце все-таки не так жестко, попробовал изменить в экспортированном правильном ключе на вывод из pwsh (без +"00,00")
внес изменения в реестр запуском reg, создался ключ с правильным значением параметра значения.
конкретно в работе не проверял, только на визуальное совпадение информации.
(но дописать никакого труда не составляет, сам бы рисковать не стал)
внимательнее почитал
я-то проверял на REG_EXPAND_SZ, ограничения конкретно на REG_MULTI_SZ.
проверил для REG_MULTI_SZ, разница есть, если не дописать (но уже 4-е 0), то превращается в REG_EXPAND_SZ
нужно так изменить вывод:
Код: Выделить весь код
$text="%appdata%\callback\callback.bat %1"
foreach ($i in $text.ToCharArray()) {
  $hex+=[System.String]::Format("{0:X2}"+",00,", [System.Convert]::ToUInt32($i))
}
"hex(7):"+$hex+"00,00,00,00" > f.txt
для REG_EXPAND_SZ и REG_SZ я так понял достаточно: "hex(2):"+$hex+"00,00" > f.txt

Последний раз редактировалось alpap, 05-02-2021 в 23:37.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:06, 05-02-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запуск Bat файла через %APPDATA%

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Перемещение файла в AppData пользователя с помощью bat-ника Stalker_AleX333 Скриптовые языки администрирования Windows 3 10-02-2017 21:47
CMD/BAT - Запуск произвольного bat файла XXXp Скриптовые языки администрирования Windows 2 23-04-2015 18:04
CMD/BAT - Запуск BAT файла с правами локального пользователя из сетевого BAT файла Yurii_L Скриптовые языки администрирования Windows 9 05-09-2012 14:27
CMD/BAT - [решено] Запуск bat-файла от имени админа.Как сделать каталог этого bat-файла текущим?? axmed0207 Скриптовые языки администрирования Windows 1 19-01-2012 06:14
WMI - [решено] Запуск .BAT файла с параметрами через WMI Glamorama Скриптовые языки администрирования Windows 3 07-10-2009 11:12




 
Переход