Версия для печати темы (https://pro1c.org.ua/index.php?s=c203b21cdc6a4c6dd1dafa04264214ef&showtopic=35363)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Использование mailto. Как проверить, установлен ли клиент по умолчанию

Автор: Inkognito 18.02.17, 10:15

Если на компьютере установлен Outlock-Thunderbird, тогда все ОК. Иначе подвисает намертво.
Если пользователь запускает в терминале, там где админ ничего не устанавливал, не настраивал, и не собирается (нет смысла).
Вопрос: как сделать проверку на наличие установленного по умолчанию почтового клиента?

Автор: Flexy 18.02.17, 12:33

Нужно читать реестр с помощью WSH (или какого нибудь еще COM-Объекта).
[HKEY_CLASSES_ROOT\mailto\shell\open]

[HKEY_CLASSES_ROOT\mailto\shell\open\command]
@="\"C:\\PROGRA~1\\MICROS~1\\Office16\\OUTLOOK.EXE\" -c IPM.Note /mailto \"%1\""

Автор: Inkognito 19.02.17, 7:07

Flexy @ Вчера, 13:33 * ,
Сравнил два реестра:
1) Где есть установленный по умолчанию Thunderbird, в mailto (в корне) есть следующее:
(по умолчанию), значение Thunderbird URL
2) Где ничего не настроено, в том же mailto (в корне) есть следующее:
(по умолчанию), значение URL:MailTo Protocol
Похоже, то что нужно: получить это значение, и если оно НЕ="URL:MailTo Protocol", тогда все ОК.
Спасибо!

Что-то не получается получить данное значение. Код:

    ЗначениеПараметра="";
    HKEY_CLASSES_ROOT = 2147483648; //  https://msdn.microsoft.com/en-us/library/aa384911(v=vs.85).aspx               
    
    ПутьККлючу = "HKEY_CLASSES_ROOT\mailto";            
    ИмяПараметра = "(По умолчанию)";
    Reg = ПолучитьCOMОбъект("winmgmts:{impersonationLevel = impersonate}!\\" + ИмяКомпьютера() + "\root\default:stdRegProv");
    Reg.GetStringValue(HKEY_CLASSES_ROOT, ПутьККлючу, ИмяПараметра, ЗначениеПараметра);
    Сообщить("Значение"+ЗначениеПараметра);

Прошу помочь, - где ошибка?

Вот скрин проблемного реестра (Виндовс 2003 сервер, пользователи работают в терминалке, им почту никто настраивать не будет):

Автор: Flexy 19.02.17, 11:52

Наверное "Имя компьютера() не нужно.

RegProv=ПолучитьCOMОбъект(
"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"
);

Автор: Flexy 19.02.17, 14:10

Или так:

Попытка
  WshShell =Новый COMОбъект("WScript.Shell");
  DefPrm= WshShell.RegRead("HKEY_CLASSES_ROOT\mailto\"); // -> "URL:mailto"
Исключение
  Сообщить(ОписаниеОшибки());
КонецПопытки;

Автор: Inkognito 23.02.17, 11:23

Flexy @ 19.02.17, 15:10 * ,
Супер, последний пример помог.

Автор: Vofka 23.02.17, 11:58

Inkognito, для спасибо у нас кнопочка специальная есть.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua