mfarhad
پنج شنبه 31 خرداد 1397, 01:13 صبح
با سلام.
امیدوارم عنوان تاپیک رو درست انتخاب کرده باشم و بتونم سوالم را بصورت واضح مطرح نمایم.
فرض کنید که 2 نوع فایل داریم ، فایل اول که می تواند بصورت های txt ، data ، bin , ... باشد و فایل دوم بصورت exe می باشد که اجرا کننده فایل های اول است. یعنی مثلا :
ShellExecute(Handle,'open','MyExe.exe','MyData.bin ', nil, SW_SHOWNORMAL) ;
فرض کنید که کاربر به فایل های نوع اول (MyData.bin )، نباید دسترسی داشته باشد و فقط بتواند نتیجه آن را بصورت اجرا شده با برنامه MyExe.exe مشاهده کند . اگر ازResourceStreamاستفاده کنم ، هنگام اجرا باید این فایلها را ابتدا در جایی ذخیره کرده و سپس استفاده نماییم و با این کار ،کاربر به راحتی می تواند به آن دسترسی داشته باشد . مانند زیر :
FileName := ExtractFilePath(Application.ExeName)+'MyData.bin';
TRS := TResourceStream.Create(hInstance, 'MyData', RT_RCDATA);
try
TFS := TFileStream.Create(FileName, fmCreate) ;
try
TFS.CopyFrom(TRS, 0) ;
finally
TFS.Free;
end;
finally
TRS.Free;
end;
ShellExecute(Handle,'open','MyExe.exe','MyData.bin ', nil, SW_SHOWNORMAL) ;
اینکه آیا می شود فایل رو ذخیره نکرد و مستقیم اجرا نمود ؟
حتی در پوشه ایی مانند TEMP هم ذخیره نگردد و یا حتی با نام و فرمت دیگری هم ذخیره نگردد ، چون در تمام این ها کاربر می تواند دسترسی داشته باشد.
یا اینکه روش دیگری وجود دارد و از ابتداروش من اشتباه می باشد؟
ممنون می شوم که راهنمایی نمایید. با سپاس
امیدوارم عنوان تاپیک رو درست انتخاب کرده باشم و بتونم سوالم را بصورت واضح مطرح نمایم.
فرض کنید که 2 نوع فایل داریم ، فایل اول که می تواند بصورت های txt ، data ، bin , ... باشد و فایل دوم بصورت exe می باشد که اجرا کننده فایل های اول است. یعنی مثلا :
ShellExecute(Handle,'open','MyExe.exe','MyData.bin ', nil, SW_SHOWNORMAL) ;
فرض کنید که کاربر به فایل های نوع اول (MyData.bin )، نباید دسترسی داشته باشد و فقط بتواند نتیجه آن را بصورت اجرا شده با برنامه MyExe.exe مشاهده کند . اگر ازResourceStreamاستفاده کنم ، هنگام اجرا باید این فایلها را ابتدا در جایی ذخیره کرده و سپس استفاده نماییم و با این کار ،کاربر به راحتی می تواند به آن دسترسی داشته باشد . مانند زیر :
FileName := ExtractFilePath(Application.ExeName)+'MyData.bin';
TRS := TResourceStream.Create(hInstance, 'MyData', RT_RCDATA);
try
TFS := TFileStream.Create(FileName, fmCreate) ;
try
TFS.CopyFrom(TRS, 0) ;
finally
TFS.Free;
end;
finally
TRS.Free;
end;
ShellExecute(Handle,'open','MyExe.exe','MyData.bin ', nil, SW_SHOWNORMAL) ;
اینکه آیا می شود فایل رو ذخیره نکرد و مستقیم اجرا نمود ؟
حتی در پوشه ایی مانند TEMP هم ذخیره نگردد و یا حتی با نام و فرمت دیگری هم ذخیره نگردد ، چون در تمام این ها کاربر می تواند دسترسی داشته باشد.
یا اینکه روش دیگری وجود دارد و از ابتداروش من اشتباه می باشد؟
ممنون می شوم که راهنمایی نمایید. با سپاس