我有一个单一的命令行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命令行应用程序中写出这段代码来实现这个功能?
这是一个多部分的问题,所以我只给出问题的主要部分作为答案,并就如何处理其余部分提出建议。
你可以通过点击 "属性",导航到 "资源 "部分,并将该.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的,所以只要不传递你不允许的命令,传递你希望允许的命令就可以了。