Всем доброго времени суток!
Есть задача "Загрузить список банков"... Суть в том что скачивается файл bnk.exe при его запуске распаковывается 3 текстовых файла... ну и т.д. Проблема заключается в том что не получается его запустить... Файл качается на 64х сервер... Поковырялся на форуме нашел вот такую функцию(WinApiServer::ShellExecuteWaitInfo):
PHP код:
static server str shellExecuteWaitInfo(str _commandLine, str _arguments = "", int _waitTime = -1)
{
System.String outputInfo;
System.IO.StreamReader streamReader;
System.Diagnostics.Process process;
System.Diagnostics.ProcessStartInfo startInfo;
InteropPermission permission = new InteropPermission(InteropKind::ClrInterop);
System.Exception exception;
Boolean exited;
System.Text.Encoding encoding;
System.Text.Encoding encoding866;
System.Text.Encoding encodingUTF;
System.Byte[] tmp;
str ret,usr = curuserId(),sss;
;
permission.assert();
encodingUTF = System.Text.Encoding::get_Unicode();
encoding866 = System.Text.Encoding::GetEncoding(866);
startInfo = new System.Diagnostics.ProcessStartInfo();//(_commandLine);
process = new System.Diagnostics.Process();
if (_arguments)
{
startInfo.set_Arguments(_arguments);
}
try
{
startInfo.set_UseShellExecute(false); // для отключения диалога безопасности доступа к сетевым файлам
startInfo.set_RedirectStandardOutput(true);
startInfo.set_FileName(_commandLine);
process.set_StartInfo(startInfo);
process.Start();
process.WaitForExit(_waitTime);
streamReader = process.get_StandardOutput();
encoding = streamReader.get_CurrentEncoding();
outputInfo = streamReader.ReadToEnd();
exited = process.get_HasExited();
if (exited == false)
{
process.Kill();
return "";
}
tmp = encoding.GetBytes(outputInfo);
tmp = System.Text.Encoding::Convert(encoding866, encodingUTF, tmp);
ret = encodingUTF.GetString(tmp);
if (ret)
return ret;
return "ok";
}
catch (Exception::CLRError)
{
exception = CLRInterop::getLastException();
while (exception)
{
error(exception.get_Message());
exception = exception.get_InnerException();
}
return "";
}
}
если вызывать данный метод вот так:
PHP код:
winapiserver::shellExecuteWaitInfo("C:\\\Program Files\\WinRAR\\WinRAR.exe", strFmt("e -y -o+ %1 %2",fn,folder));
то все нормально распаковывается...
но файл должен сам распаковываться при запуске!
если вызывать вот так:
PHP код:
winapiserver::shellExecuteWaitInfo(fn));
то файл не распаковывается... сообщение которое выдает метод:
PHP код:
Extracting from D:\bnk\bnk.exe //Причем это появляется в консоли при запуске файла в ручную...
Program aborted
т.е файл bnk.exe начинает выполнятся но так и не выполняется... Может кто сталкивался с такой ситуацией?
----