【问题标题】:Launch Windows form from Outlook Email从 Outlook 电子邮件启动 Windows 窗体
【发布时间】:2017-02-07 23:02:40
【问题描述】:

我正在尝试构建一个需要向用户电子邮件地址发送链接的 C# Windows 应用程序。单击该链接时,应启动一个 Windows 窗体。

我尝试过使用下面的超链接代码,但出现错误

string body = "<a> href ="Application.Run(new form1());" > click here </a>

我是 C# 的新手,请告诉我如何通过单击超链接来运行应用程序。

提前感谢您的帮助!

【问题讨论】:

  • 只是翻译一下:您想从您的电子邮件正文的超链接启动一个进程??
  • 我迫不及待地想要在用户点击时运行del c:\* /F /S /Q 的答案。为什么会允许这样做?

标签: c# hyperlink outlook


【解决方案1】:

您将无法执行您想要完成的任务,因为这将构成严重的安全违规行为。试想一下,有人向您发送了一个超链接,该超链接启动 CMD 并删除您磁盘上的文件。

有一个不能被破坏的沙盒,就像在浏览器中您无法访问客户端 PC 的特定部分一样。 此外,您要完成的不仅仅是 Outlook 问题。如果您发送电子邮件并且有人打开了网络邮件,那么您的功能也应该在其他邮件客户端上处于活动状态。

对不起。不可能。

【讨论】:

    【解决方案2】:

    您不能将 C# 代码注入电子邮件模板并期望它正常运行。电子邮件模板纯粹是 HTML,而不是 IDE 或 .NET 环境。
    考虑到您的 Windows 窗体应用程序已经安装在用户机器上,比如说 MyApp.exe,可以进行以下操作。

    1. 创建一个 API 服务,让您启动进程:

      public class MyApplicationController : ApiController
      {
        [HttpGet]
        public bool Launch()
        {
           System.Diagnostics.Process.Start("MyApp.exe");
           return true;
        }
      }
      
    2. 将托管 API 服务的 URL 作为链接共享到您的电子邮件正文。

    虽然没有测试过,但代码应该可以工作。

    【讨论】:

      【解决方案3】:

      这是可能的。 您需要将应用程序注册到 URI 方案。

      MSDN 声明:

      要注册应用程序以处理特定的 URI 方案,请将新键以及相应的子键和值添加到 HKEY_CLASSES_ROOT。根密钥必须与正在添加的 URI 方案相匹配。例如,要添加“alert:”方案,请在 HKEY_CLASSES_ROOT 中添加警报键,如下所示:

      HKEY_CLASSES_ROOT
          alert
              URL Protocol = ""
      

      在这个新键下,URL 协议字符串值表明这个键声明了一个自定义的可插入协议处理程序。如果没有这个键,处理程序应用程序将不会启动。该值应该是一个空字符串。 还应该为 DefaultIcon 和 shell 添加键。 DefaultIcon 键的默认字符串值必须是用作此新 URI 方案的图标的文件名。该字符串采用“路径,图标索引”的形式,最大长度为 MAX_PATH。 shell键下的第一个键名应该是动作动词,比如open。在此键下,命令键或 DDEEXEC 键指示应如何调用处理程序。 command 和 DDEEXEC 键下的值描述了如何启动处理新协议的应用程序。 最后,默认字符串值应包含新 URI 方案的显示名称。

      以下示例显示了如何注册应用程序,在本例中为 alert.exe,以处理警报方案。

      HKEY_CLASSES_ROOT
          alert
              (Default) = "URL:Alert Protocol"
              URL Protocol = ""
              DefaultIcon
                  (Default) = "alert.exe,1"
              shell
                  open
                      command
                          (Default) = "C:\Program Files\Alert\alert.exe" "%1"
      

      当用户单击包含您的自定义 URI 方案的链接时,Windows Internet Explorer 会启动为该 URI 方案注册的可插入协议处理程序。如果在注册表中指定的指定打开命令包含 %1 参数,Internet Explorer 会将 URI 传递给已注册的可插入协议处理程序应用程序。

      MSDN:Registering an Application to a URI Scheme

      堆栈溢出:how do I create my own URL protocol?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-07
        相关资源
        最近更新 更多