Если на компьютере установлен Outlock-Thunderbird, тогда все ОК. Иначе подвисает намертво.
Если пользователь запускает в терминале, там где админ ничего не устанавливал, не настраивал, и не собирается (нет смысла).
Вопрос: как сделать проверку на наличие установленного по умолчанию почтового клиента?
Нужно читать реестр с помощью 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\""
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, ПутьККлючу, ИмяПараметра, ЗначениеПараметра);
Сообщить("Значение"+ЗначениеПараметра);
Наверное "Имя компьютера() не нужно.
RegProv=ПолучитьCOMОбъект(
"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"
);
Или так:
Попытка
WshShell =Новый COMОбъект("WScript.Shell");
DefPrm= WshShell.RegRead("HKEY_CLASSES_ROOT\mailto\"); // -> "URL:mailto"
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Inkognito, для спасибо у нас кнопочка специальная есть.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua