【发布时间】:2016-06-15 22:45:05
【问题描述】:
好吧,比如我有2个项目,Form1.exe & console1.exe,我想要在form1.exe中执行console1.exe,所以我用了,
if (isLogin(true))
{
MessageBox.Show($"Welcome!");
Process.Start("console1.exe");
现在的问题是,为了执行 console1.exe,用户必须在本地存储该文件,现在的问题是,他/她可以在不执行 form1.exe 的情况下执行 console1.exe
所以我所做的是使用 ILMerge 合并 .exe,就像合并 .dll 一样,但现在无法找到 console1.exe,因此合并不起作用。
所以现在我的结论是重新打开 Visual Studio 并从 console1.exe 创建一个引用 .dll。
这样做的问题是执行 .dll 就好像它仍然是一个 .exe 而没有单独调用方法一样,所以要像执行一个方法一样执行文件。
所以基本上执行父类,然后将跟进子类。
现在无论如何我可以引用console1.exe并将其合并到form1.exe,以防止用户将其作为单独的应用程序运行,或者是否可以在console1.exe上设置规则,除非从form1调用,否则它可能不会执行.exe,或者第二个结论是在一个命令而不是多个子类中将其作为 .dll 参考库运行。
【问题讨论】:
-
您需要将第二个应用程序作为 .dll 运行。
Process.Start与从 Windows 启动它相同,因此没有真正的方法来限制调用应用程序。通常,在将 .exe 转换为 .dll 时,您只需要担心创建入口点,因为您没有使用 .exe 将使用的相同入口点,然后从您的父应用程序调用它。自从我在 C#/.NET 中完成此操作以来已经 很长 时间了。 -
您是否试图限制用户运行console1.exe,因为您不希望他们访问console1.exe(了解它),或者您只是想确保他们不能手动运行它以执行其内容?基本上,如果有人运行了 console1.exe 并且手动运行它什么也没做,它仍然可以吗?刚开始又停止了?
-
是的,几乎所有东西都可以防止它在不被 form1.exe 使用的情况下运行