是否可以让.net控制台应用程序嵌入另一个可执行文件?

问题描述 投票:0回答:1

我有一个单一的命令行windows可执行文件,这个exe文件中内置了许多选项。

例如

(它可以截屏)

ToolGo.exe printscreen c:\temp\filename.jpg yyyymmdd

(它可以出现)

ToolGo.exe showIP machineA

我想写另一个命令行应用程序,可能是在.net中,它可以嵌入一个包装器,围绕着这个程序 ToolGo.exe 文件到我的应用程序中,而用户却不能使用这些文件。ToolGo.exe而且用户只能访问这个主exe文件的一个功能。

在本例中,我想让其他工具只访问这个主exe文件的 print screen 函数在这个新的exe文件中。

新的应用程序会有这个功能。

Tool2go.exe printscreen c:\temp\filename.jpg yyyymmdd

但如果有人输入以下内容,它就不会工作。

Tool2go.exe showIP machineA

或者...

ToolGo.exe showIP machineA

有什么办法可以让我在.net命令行应用程序中写出这段代码来实现这个功能?

vb.net command-line-interface
1个回答
0
投票

这是一个多部分的问题,所以我只给出问题的主要部分作为答案,并就如何处理其余部分提出建议。

你可以通过点击 "属性",导航到 "资源 "部分,并将该.exe嵌入到你的程序中。

之后,只需将它解压到本地,这样你就可以将你的命令传递给它,并处理它的响应。(我真的不知道有什么方法可以做到先解压.exe,毕竟.exe本身需要以某种方式运行)。

要解压嵌入的.exe,你可以这样做。

' Extract the MyProgram resource (i.e. your .exe)
Dim b() As Byte = My.Resources.MyProgram

' Write it to the user's Temp folder
File.WriteAllBytes(Environment.ExpandEnvironmentVariables("%TEMP%\MyProgram.exe"), b)

把它解压到用户的Temp文件夹里,你就可以把你的命令传给它,由于它是 "看不见的",用户可能根本不知道它在那里,自己就可以直接使用它,除非他们更高级一点,经常访问他们的Temp文件夹。你可以稍微帮助避免这种情况,但在程序启动时提取.exe,然后在程序退出时删除它,这样它就只在你的程序运行时存在于用户的系统中。

至于用户可以输入什么,不可以输入什么来传递给程序,你可以简单的用你的程序来处理过滤,由于你的程序是传递命令给.exe的,所以只要不传递你不允许的命令,传递你希望允许的命令就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.