【问题标题】:How to restrict .exe file to run from C# WPF app only [closed]如何限制 .exe 文件仅从 C# WPF 应用程序运行 [关闭]
【发布时间】:2017-04-06 06:36:05
【问题描述】:

我有一个 WPF 应用程序,用于下载多个应用程序并从这个 wpf 应用程序运行这些应用程序。(可以认为类似于“Windows Store 应用程序”)

现在我需要限制从我的 wpf 应用程序下载的其他应用程序 exe 文件只能从我的 wpf 应用程序运行。如果用户尝试从文件系统运行 exe,它应该会提示一条错误消息,说明访问受限。

从我的 wpf 应用程序下载后,如何锁定 exe 以仅从我的应用程序运行。 如何在 C# WPF 应用程序中实现这一点?

【问题讨论】:

  • 如果您需要某种“幼稚”的保护,那么是的,Youri 的建议是可以的(只需考虑使用哈希码而不是普通字符串来使事情变得更加困难......)。如果您需要更多,请签署您的主机程序集,为每个“客户端”获取父进程并检查其公钥。
  • 对不起,我是 .net 开发的新手,在“如果你需要更多......”之后我没有得到你所说的话
  • 我的意思是,如果您想(多一点)确保他们不会使用正确的命令行运行这些应用程序,只需使用 dotPeek 检查您的程序集(“他们”只需要反汇编并查看什么是必需的 secret 参数)。如果是您自己的流程来验证自己的签名程序集父级,那么绕过这个限制就更难了(它总是可能的,但不太容易,它可能会排除 casual crackers

标签: c# .net wpf process


【解决方案1】:

您可以访问这些 exe 的源代码吗?因为那么您可以在下载的 exe 中添加某种登录方式。

static void Main(string[] args)
{
     if (args[0] != "password")
     {
         Environment.Exit(0);
     }
}

如果您无法访问下载的 exe 的源代码,您可以使用此解决方案。这确实需要让应用程序始终运行。 bool notepadopened = false;

while (true)
{
     foreach (Process p in Process.GetProcessesByName("notepad"))
     {
          if (!notepadopened && p.ProcessName.ToString() == "notepad")
          {
               p.Kill();
          }
     }
     Thread.Sleep(1000);
}

【讨论】:

  • 是的,我可以访问 exe 的源代码。
  • 好的,那么你可以将密码作为命令行参数传递,并在启动 exe 时检查它。
  • 如何检查密码并阻止exe启动。
  • 我正在使用Process.StartProcess() 来启动.exe 文件
  • 请查看我更新的答案。我的意思是您需要访问您下载的 exe 的源代码。不是下载exe的exe。
猜你喜欢
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多