我们有一个内部页面,我想用它来运行一个可更新服务器上的某些文件的可执行文件.换句话说,我不是每次需要手动运行此可执行文件时登录到服务器,而是希望从浏览器运行它.可执行文件在服务器上是自包含的,不与用户交互.
这是我的代码:
try
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = Server.MapPath(@"\iPhoneXMLCreator.exe");
p.StartInfo.WorkingDirectory = Server.MapPath(@"\");
p.StartInfo.RedirectStandardOutput = false;
p.Start();
p.WaitForExit();
lblResult.Text = "Success!";
}
catch (Exception ex)
{
lblResult.Text = "Oops, there was a problem.<br><Br>" + ex.Message;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,该过程显示在任务管理器中,但然后在几秒钟内退出而不更新它应该的文件.没有参数可以传递,只是一个简单的可执行文件.有任何想法吗?
我没有使用ColdFusion的经验,但是我想知道是否可以从ColdFusion应用程序调用windows .exe文件(假设应用程序和.exe在同一台机器上运行),然后使用来自.exe传递给ColdFusion应用程序中的另一个方法(或者为了简单起见,只在警报窗口中显示响应).
如果我做对了,那应该不会那么难以思考.具体来说,我将从iOS和ELF可执行格式开始.让我们澄清一下,我有一个越狱的iPhone,我不想在任何appstore应用程序中这样做,所以请求避免"好的建议",如"你不能这样做,因为它被Apple禁止".
所以,我所看到的是有一个名为Frash的Flash播放器实现(由Comex btw,最近的越狱开发人员).安装后,此实用程序需要Android的libflashplayer.so存在(复制到)iPhone文件系统.我深入研究了源代码,发现调整实际上打开了Android(ELF)共享对象文件,"解析"它并从中执行代码.我已经问过我的一个朋友,它实际上是不可能的,他告诉我它是,因为ARM上的ELF和ARM上的Mach-O是二进制兼容的(因为它们都是ARM).但他实际上没有向我详细解释,所以我想问一下怎么办呢?我无法完全理解处理的源代码片段,但有一件事是肯定的:
int fd = open("libflashplayer.so", O_RDONLY);
_assert(fd > 0);
fds_init();
sandbox_me();
int symtab_size;
Elf32_Sym *symtab;
void **init_array;
Elf32_Word init_array_size;
char *strtab;
TIME(base_load_elf(fd, &symtab, &symtab_size, &init_array, &init_array_size, &strtab));
// Call the init funcs
_assert(init_array);
while(init_array_size >= 4) {
void (*x)() = *init_array++;
notice("Calling %p", x);
x();
init_array_size -= 4;
}
Run Code Online (Sandbox Code Playgroud)
(来自原始代码,截至2011年12月2日在GitHub上)
在我看来他用libelf来执行此操作,对吗?在ELF文件中有符号可以在兼容的处理器上执行就好了吗?
我还想知道所有其他处理器架构是否都适用?那么也许可以在OS X上从Linux二进制文件执行符号?
我在64位Linux内核上创建了一个perl脚本的可执行文件(.exe).它在此环境中正确执行.
在64位Windows 7中运行可执行文件时,将显示以下错误消息:
此文件的版本与您正在运行的Windows版本不兼容.检查计算机的系统信息,以查看是否需要x86(32位)或x64(64位)版本的程序,然后与软件发行商联系.
鉴于源和目标操作系统都是64位,我不确定构建的架构是否是问题.是否有任何特殊注意事项使编译的perl程序在Windows中正确执行?谢谢.
据我所知,我需要制作一个jar文件才能获得.exe.
我的问题:我有方法:
public static void main(String[] args){
Run Code Online (Sandbox Code Playgroud)
在EX1课程中.当我做:时Export --> Java --> Runnable Jar file,EX1类不是我的选择之一.可能是什么原因?
谢谢
好吧,我有.exe应用程序和其他一些文件.我想要做的是将此其他文件写入.exe文件的末尾..exe文件应该在其内存中找到该文件的地址,从那里读取并执行一些操作.
我之前能够找到我写入内存的文件的地址,但是当我尝试从那里读取时,我得到访问被拒绝的异常.我怎么从那里读?
基本上我只想拥有一个自解压PE文件.是的,我知道,我可以只进行自解压存档,但这不是我想要的,因为我需要.exe和.dll但是自解压存档只能是.exe所以看起来唯一的办法就是让我的应用程序自我 - 提取自己.这是代码:
int main(void)
{
HMODULE hBegin = GetModuleHandle(NULL);
PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)hBegin;
PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)((PBYTE)hBegin + dosHeader->e_lfanew);
PIMAGE_SECTION_HEADER pSectionTable = (PIMAGE_SECTION_HEADER)(ntHeaders + 1);
// get size of each section
DWORD dwSize = 0;
for(int i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++)
{
dwSize += pSectionTable[i].SizeOfRawData;
}
//get size of PE headers
dwSize += ntHeaders->OptionalHeader.SizeOfHeaders;
WCHAR lpszSfxPath[MAX_PATH];
GetModuleFileNameW(NULL, lpszSfxPath, MAX_PATH);
HANDLE hFile = CreateFileW(lpszSfxPath,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
SetFilePointer(hFile, dwSize, NULL, FILE_BEGIN);
BYTE BUF[10]; …Run Code Online (Sandbox Code Playgroud) 我知道C和C++程序之间的源代码存在差异 - 这不是我所要求的.
我也知道这会因CPU和CPU以及操作系统而异,具体取决于编译器.
我正在自学C++,并且我看到了许多可以被两种语言使用的库的引用.这让我开始思考 - 这两种语言的二进制可执行文件之间是否存在显着差异?
对于两者都可以轻松使用的库,我认为它们必须在可执行级别上相似.
在许多情况下,某人可以检查可执行文件并判断它是否是由C或C++源代码创建的?或者二进制文件是否非常相似?
我希望你可以帮助我这个,我的C#非常生疏.
我在表单加载时运行可执行文件.
private void Form1_Load(object sender, EventArgs e)
{
ProcessStartInfo exe = new ProcessStartInfo();
exe.Arguments = "arguments";
exe.FileName = "file.exe";
Process.Start(exe);
}
Run Code Online (Sandbox Code Playgroud)
我想用一个按钮来杀死那个过程,但我不知道如何实现这个目标.
private void button1_Click(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个Perl脚本,它运行一个外部可执行文件.该可执行文件运行一段时间(有时是秒,有时是一小时),可以将文本吐出到STDOUT和STDERR以及退出代码,这些都是必需的.下面的代码演示了第一个成功的外部可执行文件运行(带有一行的小bash脚本 - 注释),然后出现状态不佳(例如gs - ghostscript).我希望外部可执行文件将其STDOUT提供给Perl脚本,以便在外部仍在执行时记录到日志文件(也用于其他内容)之前进行评估,过滤,格式化等.STDERR也可以以同样的方式工作.此脚本可用于记录STDOUT中的所有内容,但仅在可执行文件完成后才能记录.并且STDERR只是直接记录,没有评估等.我没有可能安装任何额外的Perl部件,模块等.
我如何让Perl脚本从可执行文件中获取每一行(STDOUT + STDERR),同时将其吐出(不仅仅是在结尾)以及出于其他目的的退出代码?
#!/usr/bin/perl
@array_executable_and_parameters = "/home/username/perl/myexecutable.sh" ; #ls -lh ; for i in {1..5}; do echo X; sleep 1; done
@array_executable_and_parameters2= "gs aaa" ;
my $line;
chdir("/home/username/perl/");
$logFileName = "logfileforsomespecificinput.log";
open(LOGHANDLE, ">>$logFileName" );
open (STDERR, '>>', $logFileName); #Prints to logfile directly
#open (STDERR, '>>', <STDOUT>); #Prints to own STDOUT (screen or mailfile)
print LOGHANDLE "--------------OK run\n";
open CMD, '-|', @array_executable_and_parameters or die $@;
while (defined($line = <CMD>)) { #Logs all at once at end …Run Code Online (Sandbox Code Playgroud) 看到一个简单的程序,例如:
print_string "Hello world !\n";
Run Code Online (Sandbox Code Playgroud)
当通过ocamlopt一些非常激进的选项(使用musl)静态编译为本机代码时,在我的系统上仍约为190KB。
$ ocamlopt.opt -compact -verbose -o helloworld \
-ccopt -static \
-ccopt -s \
-ccopt -ffunction-sections \
-ccopt -fdata-sections \
-ccopt -Wl \
-ccopt -gc-sections \
-ccopt -fno-stack-protector \
helloworld.ml && { ./helloworld ; du -h helloworld; }
+ as -o 'helloworld.o' '/tmp/camlasm759655.s'
+ as -o '/tmp/camlstartupfc4271.o' '/tmp/camlstartup5a7610.s'
+ musl-gcc -Os -o 'helloworld' '-L/home/vaab/.opam/4.02.3+musl+static/lib/ocaml' -static -s -ffunction-sections -fdata-sections -Wl -gc-sections -fno-stack-protector '/tmp/camlstartupfc4271.o' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/std_exit.o' 'helloworld.o' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/stdlib.a' '/home/vaab/.opam/4.02.3+musl+static/lib/ocaml/libasmrun.a' -static -lm
Hello world ! …Run Code Online (Sandbox Code Playgroud)