Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cách chạy file exe từ ram trong C#?

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Mặc định Cách chạy file exe từ ram trong C#?

    Em chào cả nhà.
    Em có vấn đề như sau: Em có 1 project được add thêm 1 file exe vào project.
    Lấy file đó và ghi ra đĩa cứng thì được rồi. Nhưng em muốn chạy file đó ngay từ ram nhưng đều bị báo lỗi. Cái vấn đề này em mắc từ lâu nhưng mà không giải quyết được.

    Code của em như sau

    Visual C# Code:
    1. [STAThread]
    2.         static void Main()
    3.         {
    4.             Assembly ObjAS = Assembly.GetExecutingAssembly();
    5.  
    6.             string Root = ObjAS.GetName().Name;
    7.  
    8.             Stream stream = ObjAS.GetManifestResourceStream(Root + ".calc.exe");
    9.             if (stream != null)
    10.             {
    11.                 string filePath = @"C:\calc1.exe";
    12.  
    13.                 if (!File.Exists(filePath))
    14.                 {
    15.                     using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
    16.                     {
    17.                         BinaryReader br = new BinaryReader(stream);
    18.                         byte[] buffer = br.ReadBytes(Convert.ToInt32(stream.Length));
    19.                         //buffer = br.ReadBytes(Convert.ToInt32(stream.Length));
    20.  
    21.                         AssemblyName AsName = new AssemblyName(Root + ".calc.exe");
    22.  
    23.                         Assembly AsRun = Assembly.Load(buffer);// bị lỗi ở dòng này
    24. /*Could not load file or assembly '261632 bytes loaded from Unikey, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.*/
    25.                         MethodInfo method = AsRun.EntryPoint;
    26.                         if (method != null)
    27.                         {
    28.                             object Obj = AsRun.CreateInstance(method.Name);
    29.                             method.Invoke(Obj, null);
    30.                         }
    31.  
    32.                         /*
    33.                         BinaryWriter bw = new BinaryWriter(fs);
    34.                         bw.Write(buffer, 0, buffer.Length);
    35.                         bw.Flush();
    36.                         bw.Close();*/
    37.                     }
    38.                 }
    39.             }
    40.         }

    Có bác nào đã giải quyết được vấn đề này chưa. Làm ơn giúp em. Em cảm ơn.

  2. #2
    Ngày gia nhập
    04 2009
    Bài viết
    6

    trong windows hình như có cơ chế chống thực thi file từ bộ nhớ, nên điều này có lẽ là không được rồi

  3. #3
    Ngày gia nhập
    02 2011
    Nơi ở
    Tp.HCM
    Bài viết
    124

    Hàm Assembly.Load không thực thi. Theo báo lỗi thì là do không tìm thấy thư viện được References của calc.exe.

    Thứ tự tìm các file References
    1. Thư viện được đăng ký (như thư viện Framework, các file đã được đăng ký bằng RegSvr32, ...)
    2. Thư viện trong thư mục C:\Windows\System32
    3. Thư mục chứ file cần load (hay thực thi)

    Vì bạn load file từ bộ nhớ nên bạn phải chép những file được references vào thư mục C:\Windows\System32. Như báo lỗi là thư viện Unikey, có lẽ bạn dùng thư viện hỗ trợ gõ tiếng trên control.

    Chúc bạn thành công.

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    347

    Hàm Load thì nó yêu cầu 1 mảng bytes là "Loads the assembly with a common object file format (COFF)-based image containing an emitted assembly. The assembly is loaded into the application domain of the caller." có bác nào biết làm thế nào để tạo dc định dạng như vậy không.

Các đề tài tương tự

  1. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  2. Liệt kê danh sách các file trong cùng folder với file đang chạy ?
    Gửi bởi phucduan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 05-10-2012, 09:03 AM
  3. Biên dịch chạy tốt, chạy file .exe trong Debug lỗi
    Gửi bởi conrongchautien trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 19-04-2012, 11:03 AM
  4. Làm sao để gắn 1 file bất kì vào trong app của mình rồi khi chạy xả ra hdd
    Gửi bởi langman trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 01-09-2010, 10:30 PM
  5. Bên dịch chạy tốt, chạy file exe trong Debug lỗi?
    Gửi bởi god trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 22-05-2009, 08:19 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn