PDA

View Full Version : اجراي برنامه ويندور از طريق وب



amirniknam
چهارشنبه 30 مرداد 1387, 21:59 عصر
سلام دوستان
مي خواستم ببينم بهترين راه براي اجراي يك برنامه تحت ويندوز از طريق برنامه تحت وب چيه؟
استفاده از ActiveX راه خوبيه؟
اگر پاسختون مثبت هست لطفا يه مقدار درباره نحوه نوشتن يا به كارگيري چنين Activex Control يي راهنمايي بفرمائيد
با تشكر

raravaice
پنج شنبه 31 مرداد 1387, 00:33 صبح
هدفت اینه که برنامه رو سمت سرور اجرا کنی یا کلاینت؟!

موفق باشید

amirniknam
پنج شنبه 31 مرداد 1387, 02:03 صبح
راستش به هر دو صورت لازم دارم اگر سمت كلاينت بخوام اجرا كنم بايد از ActiveX استفاده كنم ولي براي سمت سرور غير از

System.diagnostics.Process.Start().

راهي به ذهنم نمي رسه البته بيشتر سمت سرور مدنظرم هست سمت كلاينت زياد مهم نيست اما كد نوشته شده براي سمت سرور ظاهرا خيلي به مشكل بر مي خوره براي سمت كلاينت هم روي ActiveX‌اصلا مسلط نيستم و نمي دونم استفاده از يك اسكريپت ساده براي اجراي Activex Control هاي مروگر كافيه يا نه بايد خودم يكي بنويسم و بعد روي كلاينت نصب كنم

raravaice
پنج شنبه 31 مرداد 1387, 11:32 صبح
اگر میخوای سمت سرور برنامه اجرا کنی اینو بدون که حتما باید Win App شما کنسول باشه "CMD" و برنامه ای که با GUI نوشته میشه قابل اجرا نیست و همچنین در صورتی میتونی اجرای پروسس این چنینی داشته باشی که اکانتی که برنامه ASP.NET شما داره تحت اون اجرا میشه مجوز Modify رو در حالت کلی داشته باشه.

اگر هم میخوای سمت کلاینت اجرا بشه از نوشتن ActiveX با دات نت اجتناب کن چون ActiveX ها در حالت عادی فقط در IE اجرا میشن و اونم بعد از گذراندن چندین مرحله امنیتی و یکبار Refresh کامل حالا شما هم اگر بخوای محدودیت برنامه های .net رو ایجاد کنی که مطمئن باش فقط 1% از کاربرات قابلیت اجرای اون ActiveX رو دارن.

موفق باشید

amirniknam
پنج شنبه 31 مرداد 1387, 15:07 عصر
بله من هم اين مطلب رو خوندم كه براي استفاده از دستور گفته شده در سمت سرور بايد برنامه بدون محيط GUI باشه اما اين كد براي برنامه هايي كه محيط گرافيكي دارند براي من كار ميكنه مثلا notpad يا حتي من خودم يك برنامه نوشتم و تونستم اجراش كنم ؟
اين ممكنه به خاطر اين باشه كه من برنامه رو به صورت localhost اجرا مي كنم؟ يعني اگر تو وب اجرا بشه مشكل پيدا كنه
در ضمن بسياري از سايت ها گفته بودند اگر فايل EXE برنامه در پوشه Bin سايت قرار بگيره مشكل مجوز نداري ؟ !...
آيا اين مطلب درسته ؟

raravaice
پنج شنبه 31 مرداد 1387, 17:07 عصر
برنامه های شما در سرور تحت اکانت Network Service اجرا میشن که در سرور دسترسی شما محدود هست مگر اینکه Modify رو داشته باشی در غیر این صورت امکانش اصلا وجود نداره.

بهترین کار اینه که اون برنامه ای رو که میخوای EXE اجرا کنی رو تحت ASP.net بنویسی و اونو اجرا کنی.

حالا هدفت چیه، دنبال چه کاری هستی که برنامه میخوای توی سرور اجرا کنی نمیدونم! ;)

ولی این کار 100% با خود ASP.NET شدنی هست.

بگرد دنبال : "Run Batch File In Asp.net"

موفق باشید
موفق باشید

amirniknam
پنج شنبه 31 مرداد 1387, 20:21 عصر
حالا هدفت چیه، دنبال چه کاری هستی که برنامه میخوای توی سرور اجرا کنی نمیدونم! ;)
والا قضيه از اين قراره كه يك شركت از من خواسته تا كنترل دوربين هاي مدار بسته رو از طريق وب بتونه انجام بده البته قضيه بسيار ساده است و در واقع تنها كاري كه من بايد انجام بدم مديريت داده هاي يك فايل Text هستش و اينكه بتوننم برنامه مديريت دوربين ها رو (كه تحت ويندوز هست) Run كنم ديگه از اونجا به بعد خود اين برنامه همه كار ها رو انجام ميده براي همين مي خوام اين برنامه رو از طريق وب اجرا كنم ولي اين برنامه محيط گرافيكي هم داره

misagh1359
جمعه 01 شهریور 1387, 00:20 صبح
عزیز لقمه رو داری می پیچونی

یادشون بده از Remote Desktop استفاده کنن .

یه Valid IP تو شبکه شون گیر بیار NAT رو فعال کن بعد هم یا علی مدد از هر جا که بخوان وصل شن و برنامه شون رو اجرا کنن

mostafa_sgh
جمعه 01 شهریور 1387, 01:11 صبح
والا قضيه از اين قراره كه يك شركت از من خواسته تا كنترل دوربين هاي مدار بسته رو از طريق وب بتونه انجام بده البته قضيه بسيار ساده است و در واقع تنها كاري كه من بايد انجام بدم مديريت داده هاي يك فايل Text هستش و اينكه بتوننم برنامه مديريت دوربين ها رو (كه تحت ويندوز هست) Run كنم ديگه از اونجا به بعد خود اين برنامه همه كار ها رو انجام ميده براي همين مي خوام اين برنامه رو از طريق وب اجرا كنم ولي اين برنامه محيط گرافيكي هم داره

سلام رفیق

همچین ساده هم به نظر نمیرسه ولی چند تا سوال ....

آیا برنامه ی دوربین رو هر کلاینت نصب هست یا فقط تو سرور نصبه ؟

اگر تو سرور نصبه و سرور هم قابل دسترسی هست ، شما طبق روش بالا که دوستمون (raravaice ) فرمودن ،مشکلتون حل میشه ...

حالا چرا باید تو سرور اجرا بشه ، پس کی ازش استفاده میکنه ؟ ( البته اینو میدونم که یه نرم افزار کلاینت هم باید وجود داشته باشه که به سرور کانکت شه و ... منظورم اینه که برنامه سرورشومیخواهید اجرا کنید یا کلاینت رو سمت کاربر راه بندازی !!!)

حالا اگه میخوای سمت کاربر برنامه رو اجرا کنی که قضیش یه خورده با این مسائل فرق میکنه و از یه تکنیک دیگه باید انجامش بدی ....
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟
منتظر پاسخ هستیم ...

amirniknam
جمعه 01 شهریور 1387, 02:19 صبح
عزیز لقمه رو داری می پیچونی

یادشون بده از Remote Desktop استفاده کنن .

یه Valid IP تو شبکه شون گیر بیار NAT رو فعال کن بعد هم یا علی مدد از هر جا که بخوان وصل شن و برنامه شون رو اجرا کنن

اتفاقا شما درست مي فرمائيد من هم اين پيشنهاد رو بهشون دادم اما خيلي اصرار به پياده سازي اين قضيه دارند (البته حق هم دارند يه مقدار كار با Remote Desktop مشكله و سرعت پايين اينترنت هم مزيد علت ميشه) رو همين حساب سعي ميكنم همونطور كه خواستن براشون انجام بدم.



سلام رفیق

همچین ساده هم به نظر نمیرسه ولی چند تا سوال ....

آیا برنامه ی دوربین رو هر کلاینت نصب هست یا فقط تو سرور نصبه ؟

اگر تو سرور نصبه و سرور هم قابل دسترسی هست ، شما طبق روش بالا که دوستمون (raravaice ) فرمودن ،مشکلتون حل میشه ...

حالا چرا باید تو سرور اجرا بشه ، پس کی ازش استفاده میکنه ؟ ( البته اینو میدونم که یه نرم افزار کلاینت هم باید وجود داشته باشه که به سرور کانکت شه و ... منظورم اینه که برنامه سرورشومیخواهید اجرا کنید یا کلاینت رو سمت کاربر راه بندازی !!!)

حالا اگه میخوای سمت کاربر برنامه رو اجرا کنی که قضیش یه خورده با این مسائل فرق میکنه و از یه تکنیک دیگه باید انجامش بدی ....
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟
منتظر پاسخ هستیم ...

نه نرم افزار فقط تو سرور اجرا ميشه ، سرور اين ها هميشه روشنه اما به دلايلي مرتبا دوربين ها رو خاموش و روشن ميكنند. خاموش كردن و روشن كردن دوربين ها مشكلي نداره چون اون برنامه خودش اتومات و از طريق برنامه موجود روي فايل Text اين كارو انجام ميده اما برنامه اين دوربين ها يه مشكل جالب داره (برنامه خارجي هست و من ننوشتم) و اينكه اگر مطابق برنامه زمانبندي دوربين ها (همه دوربين ها) خاموش بشه خود نرم افزار هم خودش رو ميبنده اونوقت بايد يه بنده خدايي پاي سرور باشه تا دوباره نرم افزار رو اجرا كنه !...

mostafa_sgh
جمعه 01 شهریور 1387, 02:51 صبح
و اما نتیجه ......

ابتدا داخل IIS یه Application Pool جدید بسازید ، سپس برید به قسمت تنظیمات App Pool جدید و تو تب Identity قسمت Configurable رو انتخاب کن و یه User که مجوز Read and Execute داره رو اونجا انتخاب کنید.

سپس برید تو تنظیمات Web Site و تو قسمت Directory Security و داخل Authentication and Access Control گزینه Enable Anonymous Access رو غیر فعال کنید .( به جاش از یکی از موارد Basic یا Digest یا Forms استفاده کنید )

و توی رویداد onClick دکمهای که میخوای برنامتون رو اجرا کنید ، کد زیر رو بنویسید ( فقط دقت داشته باشید نام کاربری که برای اجرای برنامه در این کد مورد استفاده قرار می دید باید همونی باشه که تو Application Pool انتخاب کردید ) :

*** البته این نکته هم مد نظرتون باشه که برنامتون تو Background اجرا میشه ، که برا اطمینان می تونید از داخل Task Manager از صحت عملکرد کار اطلاع حاصل کنید ***



string pass = "123456";
try
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("notepad.exe");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardError = true;
psi.CreateNoWindow = true;
psi.UserName = "test";
psi.Password = new System.Security.SecureString();
for (int x = 0; x < pass.Length; x++)
psi.Password.AppendChar(pass[x]);
psi.Domain = "Your Domain Name or Local Computer Name";
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}


البته بیشتر این مطالبی که خدمتتون عرض کردم ، برداشت های شخصی بندست و شاید از لحاظ حرفه ای گری صحیح نباشه و نیاز به اصلاح داشته باشه ...
که اونو میزارم به عهده شما !