# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > Setup و Deployment >  مشکل در اجرای برنامه از روی شبکه

## alirzn

با سلام:
من یک برنامه دارم که روی سرور یکی از سازمانهای دولتی هست.
وقتی فایل exe برنامه رو روی درایو server شبکه می گذارم اجرا نمی شود و error
That assembly does not allow partially trusted callers
می دهد.
اما وقتی روی hard هست برنامه اجرا میشه
ممنون می شم اگر کمکم کنید.

----------


## MH2538

به این آدرس مراجعه کن.
http://blogs.msdn.com/shawnfa/archiv...04/367390.aspx

----------


## alirzn

ممنونم
اما من این لینکو دیدم اما چیزی دستگیرم نشد
این پیغام اصلا چیه؟
باید چه کار کنم؟

----------


## alirzn

کسی نیست بتونه به من کمک کنه؟

----------


## mehdi.mousavi

> با سلام:
> من یک برنامه دارم که روی سرور یکی از سازمانهای دولتی هست.
> وقتی فایل exe برنامه رو روی درایو server شبکه می گذارم اجرا نمی شود و error
> That assembly does not allow partially trusted callers
> می دهد.
> اما وقتی روی hard هست برنامه اجرا میشه
> ممنون می شم اگر کمکم کنید.


لطفا به این آدرس رجوع کنید.

----------


## رضا عربلو

ببیینید بنا به secuerity که مایکروسافت در دات نت ارائه کرده است هر برنامه تنها به منابعی که بصورت لوکال در آن کامپیوتر قرار دارد تراست می کند. 
در صورتی که  برنامه شما بخواهد از منابعی که در شبکه قرا دارند استفاده کنید (از قبیل اسمبلی های غیر میکروسافت)مشکل trust خواهید داشت (اسمبلی های مایکرو سافت بطور پیش فرض تراست شده اند). که این مشکل به راحتی با ابزارهای caspol و یا ایجاد یک پکیج msi و قرا دادن آن در Group policy به راحتی قابل حل است.

این کار را انجام داده و کاملاً تست کرده ام. جواب می دهد.

----------


## alirzn

میشه یکم توضیح بدید.
چطور میشه این کاری که گفتید رو انجا داد.
میشه دقیق بگید؟

----------


## رضا عربلو

نمونه ای از نحوه استفاده از CASPOL را در پایین برایتان قرار می دهم

*%systemroot%\Microsoft.NET\Framework\v2.0.50727\ca  spol -m -polchgprompt off -ag LocalIntranet_Zone -url \\Donya\BNPPAssistance\* FullTrust -n "BNPPAssistance" -d "BNPPAssistance Trust"*

این پچ را بایستی در کلاینت هایتان اجرا کنید.

البته این تنضیمات را می توانید در روی یک ماشین در* CONTEROL PANERL-->*
*Microsoft .NET Framework 2.0 Configuration -->*
*RUNTIME SECUERITY POLICY -->*
* MACHINE -->*
* CODE GROUPS -->*
* ALL_CODE -->*
* LocalIntranet_Zone -->*
* ADD A CHILD GROUP CODE* 
*انجام دهید سپس بر روی نود RUNTIMESECURITY POLICY کلیک راست کرده و با انتخاب CREATE DEPLOYMENT PACKAGE یک فایل .MSI بدست خواهید آورد که تنضیماتی را که انجام داده اید را با اجرای آن بر روی هر کامپیوتری انجام خواهد داد. حال این پکیج را درز GEROUP PLOCY برای اجرا بر روی کلاینت های دامین تان قرار دهید.*

----------


## alirzn

میبخشید پکیج را در کجا قرار دهم؟
منظورت از group policy کجاست؟

من این کاری رو گفتید کردم دوباره نشد.
اون capsol رو کجا باید وارد کنم؟
من فایلمو واستون فرستادم یک نگاهی بهش کی کنید؟
خیلی واسم این کار مهمه . اگر کمکم کنید واقعا ممنون میشم.

آقا من اون کار رو کردم و پکیج رو هم ساختم و اجراش کردم بازم نشد.
این کار واسم خیلی مهمه . واقعا ممنون میشم اگر کمکم کنید.
وقتی *ADD A CHILD GROUP CODE* 
را می زنم در تنظیماتش چیزه خاصی نداره که؟

میبخشید پکیج را در کجا قرار دهم؟
منظورت از group policy کجاست؟

اون دستور capsol که گفتید تا v2.0.50727 رو میرم.
اون بعدش چیه؟
کجا باید وارد کنم؟

----------


## رضا عربلو

1- این چیزهایی که در بالا گفتم را در MSDN خواندم. یک نگاهی بهش بنداز خیلی خوب و جامع دربرش صحبت کرده است.
2- group policy یکی از امکانات WINDOWS SERVER2000 , 2003 می باشد که با کمک آن می توانید یک سری اعمال سیاست ها را بر روی شبکه تان انجام دهید. مثلا این که بر روی هر کلاینت یک نرم افزار را نصب کنید که در مورد بالا پکیج MSI می باشد.
3-این دستور capsol که گفتم را می توانید به صوورت یک batch file درست کنید و بر روی کلاینت هایتان اجرا کنید. یا اور می شوم که \\Donya\BNPPAssistance\* ادرس برنامه شما است )Donya) اسم سرور یا کامپیوتری که برنامه در ان قرار ارد و BNPPAssistance اسم فولدری که shareشده است.
4- ADD A CHILD GROUP CODE بعد یک اسم به انتخاب خودت می دی بعد next بعد url را انتخاب می کنی و در پایینش مسر پوشه برنامه مثلاً  \\Donya\BNPPAssistance\ و بعد nextو بعد full trust و ...

----------


## alirzn

آقا من اون کارو کردم نشد.
آقا شرمنده من فایل برنامه رو فرستادم واستون.
آدرس سرور و فلدر منم روی شبکه که domain هست به صورت زیره.
172.16.0.3\\
و اسم فلدر baznesh هست.
واقعا ممنون میشم اگر کمکم کنید و یک نگاهی به برنامه کنید.
راستی اون capsol رو حتما باید انجام بدم؟ یا همون msi ساختن کفایت می کنه؟
یعنی دو راه مختلف هست یا اینکه هر دو شو باید انجام بدم؟

----------


## mehdi.mousavi

> آقا من اون کارو کردم نشد.
> آقا شرمنده من فایل برنامه رو فرستادم واستون.
> آدرس سرور و فلدر منم روی شبکه که domain هست به صورت زیره.
> 172.16.0.3\\
> و اسم فلدر baznesh هست.
> واقعا ممنون میشم اگر کمکم کنید و یک نگاهی به برنامه کنید.
> راستی اون capsol رو حتما باید انجام بدم؟ یا همون msi ساختن کفایت می کنه؟
> یعنی دو راه مختلف هست یا اینکه هر دو شو باید انجام بدم؟



کاری که تو پست 5 گفتم رو انجام دادید؟؟؟

----------


## alirzn

اون msdn رو هم دیدم اما به نتیجه نرسیدم

----------


## رضا عربلو

یکی از دو روش  capsol یا  msi به اختیار خودت.
ببین شما مشکل تراست  به یک منبع داری و مثالی که من در بالا آوردم تراست به یک فولدر بود ببین به چی تراست نمی کنی (یک پرینتر، یک ...). ولی روش همونی که در قبلا گفتم.

----------


## رضا عربلو

دوست عزیز ، من برنامه شما را در فولدر شیر شده در شبکه اجرا کردم (البته تا قسمت لاگین به sql server).


1- اگر ip سرور شما 172.16.0.3 یاشد و برنامه شما در فولدر baznesh شیر (share) شده باشد شما می توانید یک بچ فایل به صورت 

echo off
%systemroot%\Microsoft.NET\Framework\v2.0.50727\ca  spol -m -polchgprompt off -ag LocalIntranet_Zone -url \\172.16.0.3\baznesh\* FullTrust -n "baznesh" -d "bazneshTrust"
Pause

بسازید و با اجرای آن در کلاینت هایتان به آنها بگویدد که به مسیر فوق trust کنند (البته بایستی پرمیشن لازم را برای اجرای آن در کلاینت ها داشته باشید به همین دلیل در پایان بچ فایل pause گذاشتم تا از صحت اجرای آن مطمئن شوید)
حالا کلاینت هایتان می توانند با اجرای \\172.16.0.3\baznesh\mnu.exe در windows Explorer برنامه تان را اجرا کنند (می توانید یک شورت کات برای آن بسازید)


2- اگرنام کامپیوتر سرور شما Server01 یاشد و برنامه شما در فولدر baznesh شیر (share) شده باشد شما می توانید یک بچ فایل به صورت 

echo off
%systemroot%\Microsoft.NET\Framework\v2.0.50727\ca  spol -m -polchgprompt off -ag LocalIntranet_Zone -url \\Server01\baznesh\* FullTrust -n "baznesh" -d "bazneshTrust"
Pause

بسازید و با اجرای آن در کلاینت هایتان به آنها بگویدد که به مسیر فوق trust کنند (البته بایستی پرمیشن لازم را برای اجرای آن در کلاینت ها داشته باشید به همین دلیل در پایان بچ فایل pause گذاشتم تا از صحت اجرای آن مطمئن شوید)
حالا کلاینت هایتان می توانند با اجرای \\Server01 \baznesh\mnu.exe در windows Explorer برنامه تان را اجرا کنند (می توانید یک شورت کات برای آن بسازید)


نکته: بین دو UNC  ـ( \\Server01 \baznesh\mnu.exe و \\172.16.0.3\baznesh\mnu.exe) تفاوت قائل شوید و اگر به یک نوع UNC تراست بخشیدید فقط از آن می توانید استفاده کنید (مثلاً در مورد اول نمی توانید از \\Server01 \baznesh\mnu.exe برای اجرای برنامه استفاده کنید و برعکس) بنا بر این بهتر است هر دو بچ فایل را با هم ادقام کنید.


اگر باز هم به مشکل برخوردید صددرصد مطمئن باشید اشکال از جای دیگری است. 
مرا بی اطلاع نگذارید.
با تشکر.

----------


## alirzn

مرسی از راهنماییتون
این  بچ فایل رو چه جوری باید بسازم؟
یعنی این دستوری که نوشتید رو کجا باید وارد کنم؟
واقعا ممنون

----------


## PC2st

> این بچ فایل رو چه جوری باید بسازم؟


بچ فایل (Batch File) یک فایل متنی با پسوند bat است. یک فایل متنی با اون محتویات درست کنید و پسوندش رو به bat تغییر بدید.

----------


## alirzn

آقا من این کارو هم کردم بازم نشد.
ببین آدرس دقیق فلدر من در مسیر  \\172.16.0.3\nv\baznesh
و اسم سرور \\172.16.0.3\nv\baznesh
که در واقع nv یکی از شاخه های سرور است و baznesh درون آن است.
من nv  هم به دستوراتم اضافه کردم اما بازهم نشد.
شما میشه batch فایل رو بسازین و واسه من بفرستید؟
ضمنا لازم نیست bacth فایل جای خاصی باشه و اجرا بشه؟
ممنون میشم

----------


## رضا عربلو

1-\\172.16.0.3\nv\baznesh\ اسم سرور نیست اسم سرور می تونه serevceer01, ... باشه
2- در کلاینت هات بچ فایل را اصلاً اجرا می کنی؟ و آیا با موفقیت اجرا میشود؟

----------


## رضا عربلو

لازم نیست bacth فایل جای خاصی باشه و اجرا بشه. خودش مسیر caspol زرا پیدا می کند.

----------


## رضا عربلو

بلاخره مشکلت حل شد؟

----------


## alirzn

نه هنوز همون مشکل رو دارم هر کاری میکنم نمیشه.
روی هر شبکه ای که می خوام این کارو کنم همین پیغام رو میده.

----------


## رضا عربلو

1-* مطمئن باش که جواب همینی که من گفتم*. من خودم برنامت را توی شبکه تست کردم (التهتا لاگین به اسکیوال سرور) بدون هیچ مشکلی اجرا شد.
2- اگر تمام چیزهای رو که گفتم مو به مو اجرا کردی پس باید مشکل جای دیگری باشد.
3-برای یافتن مشکل از جاهای خیلی ساده شروع می کنیم.

الف- اصلاً تو کلاینت هات دات نت فریمورک نصب است و چه ورژنی؟ اا با ورژن مورد استفاده در برنامه ات یکی است؟
ب - ایا اگر برنامه ات را بصورت لوکال در کلایت هااجرا کنی (یعنی بدون انکه برای برنامه ات ستاپ بسازی باکپی فایلهای که در بالا دادی برنامه ات در یک پوشه در کلاینت هات مثلاً c:\) بطور کاملاجرا می شود. لین صوال را از اینبابت گفتم تا بدانم تمام اسمبلی ها و دیگر resource ها را در پوشه رنامه قرار دادی.
ج- باز هم می پرسم ایا دیتور trust به مسیر پوشه share شد با موفقیت انجام می شود. برای اطمینان در .net 2.0 configuraion managment  ببین ایا دستور فوق درست trust  کرده است.
د- فکر می کنی برنامه ات به ه پرمیشن هایی برای پوشه و فایل های وجود دران نیاز دارد و ایا اون پرمیشن ها را دارد.

----------


## alirzn

آره .net2.0 نصب هست روی همه کلاینت هام
و وقتی فایل ها رو روی هارد کلاینت کپی می کنم بدون مشکل اجرا میشه.

منظور ج و د رو متوجه نشدم دقیق میگید چیه؟






> 1-* مطمئن باش که جواب همینی که من گفتم*. من خودم برنامت را توی شبکه تست کردم (التهتا لاگین به اسکیوال سرور) بدون هیچ مشکلی اجرا شد.
> 2- اگر تمام چیزهای رو که گفتم مو به مو اجرا کردی پس باید مشکل جای دیگری باشد.
> 3-برای یافتن مشکل از جاهای خیلی ساده شروع می کنیم.
> 
> الف- اصلاً تو کلاینت هات دات نت فریمورک نصب است و چه ورژنی؟ اا با ورژن مورد استفاده در برنامه ات یکی است؟
> ب - ایا اگر برنامه ات را بصورت لوکال در کلایت هااجرا کنی (یعنی بدون انکه برای برنامه ات ستاپ بسازی باکپی فایلهای که در بالا دادی برنامه ات در یک پوشه در کلاینت هات مثلاً c:\) بطور کاملاجرا می شود. لین صوال را از اینبابت گفتم تا بدانم تمام اسمبلی ها و دیگر resource ها را در پوشه رنامه قرار دادی.
> ج- باز هم می پرسم ایا دیتور trust به مسیر پوشه share شد با موفقیت انجام می شود. برای اطمینان در .net 2.0 configuraion managment ببین ایا دستور فوق درست trust کرده است.
> د- فکر می کنی برنامه ات به ه پرمیشن هایی برای پوشه و فایل های وجود دران نیاز دارد و ایا اون پرمیشن ها را دارد.

----------


## رضا عربلو

اگر چه که شک دارم که تمام چیزهایی که گفتم به دقت انجام داده ای، ولی خوب ادامه می دهیم.
ج. بر روی یک کلاینت در 
*CONTEROL PANERL* *-->
Microsoft .NET Framework 2.0 Configuration -->*
*RUNTIME SECUERITY POLICY -->*
*MACHINE -->*
*CODE GROUPS -->*
*ALL_CODE -->*
*LocalIntranet_Zone* 
آیا نود* baznesh* را می بینی . این نود چه تنضیماتی دارد؟

د. فکر می کنی برنامه ات به چه پرمیشن هایی برای پوشه و فایل های وجود دران نیاز دارد و ایا اون پرمیشن ها را دارد. یعنی ممکن ست برنامه ات بخواهد در این شاخه چیزی را تغییر دهد مثلاً یک فایل را و شما فقط پرمیشن Readonly  داشته باشید؟

ه. یک برنامه خیلی ساده که از یک ریسورس (مثلاً یکی از اسمبلی های که در برنامت از انها استفاده کرده ای) استفاده می کند را در همان پوشه بگذار و ببین ایا اجرا می شود؟

----------


## alirzn

نود Baznesh حاوی:
*Description: 
bazneshTrust 

Assembly evidence must match this membership condition to belong to the code group: Url: \\172.16.0.3\nv\baznesh\*. 

Assemblies matching the membership condition are granted this permission set at the current policy level: FullTrust. 

Permission Set Description: 
Allows full access to all resources 

*

ضمنا من تو برنامم از componentهای متفرقه که از internet گرفتم و add refrence کردم استفاده می کنم.
اونها باعث مشکل که نمیشن؟

----------


## رضا عربلو

> ضمنا من تو برنامم از componentهای متفرقه که از internet گرفتم و add refrence کردم استفاده می کنم.


خویب ما می خواهیم به همین کامپاننت ها که در شاخه برنامه ات قرار دارند تراست بکنیم.
ه. یک برنامه خیلی ساده که از یک ریسورس (مثلاً یکی از اسمبلی های که در برنامت از انها استفاده کرده ای) استفاده می کند را در همان پوشه بگذار و ببین ایا اجرا می شود؟

----------


## alirzn

منظورتو دقیق متوجه نمیشم. میشه دقیق بگی چکار کنم؟
من فلدرو واست فرستادم مثلا کدوم فایل رو؟





> خویب ما می خواهیم به همین کامپاننت ها که در شاخه برنامه ات قرار دارند تراست بکنیم.
> ه. یک برنامه خیلی ساده که از یک ریسورس (مثلاً یکی از اسمبلی های که در برنامت از انها استفاده کرده ای) استفاده می کند را در همان پوشه بگذار و ببین ایا اجرا می شود؟

----------


## alirzn

منظورتو دقیق متوجه نمیشم. میشه دقیق بگی چکار کنم؟
من فلدرو واست فرستادم مثلا کدوم فایل رو؟

----------


## رضا عربلو

ببین ریسورس می تونه یک فایل باشد، یک اسمبلی باشد.
یک برنامه خیلی ساده درست کن و در اون از کامپاننتهای که در برنامه اصلی ات استفاده کردی قرار بده. قائدتاً این برنامه بایستی اجرا شود.

----------


## alirzn

سلام :
آقا من مشکلی که داشتم و اون اجرا نشدن برنامه از روی شبکه بودو هنوز دارم. و خیلی هم لازمش دارم. میشه با هم دوباره تلاش کنیم که درست بشه؟
ممنون. این لینک بدرد میخوره؟
http://www.codeproject.com/csharp/run_code_remotely.asp




> ببین ریسورس می تونه یک فایل باشد، یک اسمبلی باشد.
> یک برنامه خیلی ساده درست کن و در اون از کامپاننتهای که در برنامه اصلی ات استفاده کردی قرار بده. قائدتاً این برنامه بایستی اجرا شود.

----------


## رضا عربلو

ببین من برنامه تو را بدون هیچ مشکلی از روی یک فولدر شیر شده در شبکه اجرا کردم.
ای کاش می تونستم یک فیلم برات تهیه کنم و برات بفرستم تا ببینی!
با اطمینان می گویم که اگر کارهای را که در بالا گفتم درست انجام بدهی بایستی بتوانی برنامه ات را اجرا کنی، مگر آنکه مشکل در جای دیگری باشد.

اگر می خواهی دوباره با هم سعی کنیم، یک بار دیگه یک برنامه تک فرمی خیلی ساده که از اون کامپاننت ها استفاده می کنند بساز و تمام اون مراحلی که گفتم انجام بده و ببین اجرا میشود یا نه اگر تمام اون مراحل را به درستی انجام دادی و برنامه ات اجرا شد که فوحی و اگر اجرا نشد مطمئن باش مشکل از جای دیگری است.

نه اون لینکی که دادی مربوط به مبحث دات نت ریموتینگ است.
لینک زیر رو یک نگاه کن :
http://www.codeproject.com/dotnet/UB_CAS_NET.asp

----------


## hdv212

mehdi6755 جان این کدت که مشکل داره، اصلا از لحاظ Syntax درست نیست، شاید بد کپی کردی، یه بار دیگه با دقت بنویس، مرسی:
[assembly: System.Security.Permissions.PermissionSet
System.Security.Permissions.SecurityAction.Request  Minimum, Name="FullTrust")]

البته از این مسیر که از CodeProject گرفتم، مشکل حل میشه :
->Control Panel\Administrative Tools: Net framework configuration->RunTime security policy->(Machine)->
->All code->Edit Code Group Properties->Permission set
و Permission set رو روی Full Trust قرار بدید.


ولی راهی که mehdi6755 گفت، از طریق کد نویسی هست و قشنگ تره.
ولی یه سوال اینجاس، اگه برنامه ی ما از dll یا ocx ای غیر از دات نت استفاده کرده باشه چی ؟

----------


## alirzn

آقا من اون راه رو چک کردم اما دقیق نمی دونم باید چه کار کنم و آیا درست کارمئ انجام میدم یا نه؟
میشه با هم دوباره از اول تلاش کنیم؟ ممنون میشم.




> ببین من برنامه تو را بدون هیچ مشکلی از روی یک فولدر شیر شده در شبکه اجرا کردم.
> ای کاش می تونستم یک فیلم برات تهیه کنم و برات بفرستم تا ببینی!
> با اطمینان می گویم که اگر کارهای را که در بالا گفتم درست انجام بدهی بایستی بتوانی برنامه ات را اجرا کنی، مگر آنکه مشکل در جای دیگری باشد.
> 
> اگر می خواهی دوباره با هم سعی کنیم، یک بار دیگه یک برنامه تک فرمی خیلی ساده که از اون کامپاننت ها استفاده می کنند بساز و تمام اون مراحلی که گفتم انجام بده و ببین اجرا میشود یا نه اگر تمام اون مراحل را به درستی انجام دادی و برنامه ات اجرا شد که فوحی و اگر اجرا نشد مطمئن باش مشکل از جای دیگری است.


یکی از برنامه های دیگم که می خوام باز کنم یک پیغام دیگه میده.
request for the permission of type
'system.data.sqlclient.sqlclientpermission,system.  data'fail
این پیغام مال چیه؟

----------


## رضا عربلو

احتمالاً لاگینی که با آن به اس کیو ال متصل می شوی پرمیشن لازم برای اجرای دستور اس کیو ال مربوطه را ندارد.

اون لینکی  رو که داده بودم با دقت خوندی؟
http://www.codeproject.com/dotnet/UB_CAS_NET.asp

----------


## hdv212

> یکی از برنامه های دیگم که می خوام باز کنم یک پیغام دیگه میده.
> request for the permission of type
> 'system.data.sqlclient.sqlclientpermission,system. data'fail
> این پیغام مال چیه؟


همون راه حلی که در پست 33 گفتم رو انجام دادی ؟ از اون مسیر برو، مشکلت حل میشه، ولی اون دو تا سوال رو که در پست 33 کردم هنوز کسی جواب نداده.

----------


## alirzn

این کارو که تو پست 33 گفتی رو روی client ها باید انجام بدم یا server؟




> همون راه حلی که در پست 33 گفتم رو انجام دادی ؟ از اون مسیر برو، مشکلت حل میشه، ولی اون دو تا سوال رو که در پست 33 کردم هنوز کسی جواب نداده.

----------


## hdv212

روی جایی که این پیغام خطا رو بهت میده، به احتمال زیاد کلاینت هست.

----------


## alirzn

آقا من این کارو کردم درست شد. اما من چندین کلاینت دارم. نمیشه که یکی یکی روی همه ی کلاینت ها این کارو کرد. نمیشه توی کد برنامه کدی نوشت که این تنظیمو انجام بده؟




> روی جایی که این پیغام خطا رو بهت میده، به احتمال زیاد کلاینت هست.

----------


## alirzn

آقا من این کالرو کردم درست شد
->Control Panel\Administrative Tools: Net framework configuration->RunTime security policy->(Machine)->
->All code->Edit Code Group Properties->Permission set
اما روی تک تک client ها باید این کارو کنم. نمیشه کدی نوشت تو برنامم بگذارم که همین کارو اتوماتیک انجام بده؟




> احتمالاً لاگینی که با آن به اس کیو ال متصل می شوی پرمیشن لازم برای اجرای دستور اس کیو ال مربوطه را ندارد.
> 
> اون لینکی رو که داده بودم با دقت خوندی؟
> http://www.codeproject.com/dotnet/UB_CAS_NET.asp

----------


## alirzn

آقا من این کارو کردم درست شد.
->Control Panel\Administrative Tools: Net framework configuration->RunTime security policy->(Machine)->
->All code->Edit Code Group Properties->Permission set
اما روی تکتک کلاینت هام باید این کارو کنم. نمیشه کدی بنویسم توی برنامم که اتوماتیک این کار انجام بشه؟




> احتمالاً لاگینی که با آن به اس کیو ال متصل می شوی پرمیشن لازم برای اجرای دستور اس کیو ال مربوطه را ندارد.
> 
> اون لینکی رو که داده بودم با دقت خوندی؟
> http://www.codeproject.com/dotnet/UB_CAS_NET.asp

----------


## alirzn

آقا من این کارو کردم درست شد.
->Control Panel\Administrative Tools: Net framework configuration->RunTime security policy->(Machine)->
->All code->Edit Code Group Properties->Permission set
اما روی تکتک کلاینت هام باید این کارو کنم. نمیشه کدی بنویسم توی برنامم که اتوماتیک این کار انجام بشه؟



> احتمالاً لاگینی که با آن به اس کیو ال متصل می شوی پرمیشن لازم برای اجرای دستور اس کیو ال مربوطه را ندارد.
> 
> اون لینکی رو که داده بودم با دقت خوندی؟
> http://www.codeproject.com/dotnet/UB_CAS_NET.asp

----------


## hdv212

خب منم منظورم همین بود، فعلا باید روی تک تک کلاینت ها انجام بدی، ولی کدی که mehdi6755 گذاشته از طریق کد نویسی هست :
[assembly: System.Security.Permissions.PermissionSet
System.Security.Permissions.SecurityAction.Request  Minimum, Name="FullTrust")]
منتها کدش مشکل داره، فکر کنم بد کپی کرده باشه.
مشکل دیگه اینه که اگه برنامه مون از یه dll غیر دات نتی هم استفاده کرده باشه، اونوقت چی ؟ اونو چکار کنیم ؟

----------


## alirzn

نمیدونم اونم مشکل ایجاد میکنه.
راستی با batch فابل چی؟ مثلا یک batch فایل ساخت که این کارو انجام بده؟




> خب منم منظورم همین بود، فعلا باید روی تک تک کلاینت ها انجام بدی، ولی کدی که mehdi6755 گذاشته از طریق کد نویسی هست :
> [assembly: System.Security.Permissions.PermissionSet
> System.Security.Permissions.SecurityAction.Request  Minimum, Name="FullTrust")]
> منتها کدش مشکل داره، فکر کنم بد کپی کرده باشه.
> مشکل دیگه اینه که اگه برنامه مون از یه dll غیر دات نتی هم استفاده کرده باشه، اونوقت چی ؟ اونو چکار کنیم ؟

----------


## alirzn

آقا من فایل msi آن رو ساختم و بر روی هر سیستمی که اجرا بشه اون تنظیم fuultrust رو انجام میده. 
* بر روی نود RUNTIMESECURITY POLICY کلیک راست کرده و با انتخاب CREATE DEPLOYMENT PACKAGE یک فایل .MSI بدست خواهید آورد که تنضیماتی را که انجام داده اید را با اجرای آن بر روی هر کامپیوتری انجام خواهد داد. حال این پکیج را درز GEROUP PLOCY برای اجرا بر روی کلاینت های دامین تان قرار دهید.*

----------


## رضا عربلو

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

----------


## hdv212

آقا راه حلش از طریق کد نویسی هنوز حل نشده :
assembly: System.Security.Permissions.PermissionSet
System.Security.Permissions.SecurityAction.Request  Minimum, Name="FullTrust")]
من فکر کنم منظور mehdi6755 از کد بالا این بوده :
[assembly: System.Security.Permissions.PermissionSet(System.S  ecurity.Permissions.SecurityAction.RequestMinimum,  Name="FullTrust")]
که وقتی از شبکه برنامه رو اجرا میکنم، با پیغام خطای don't send مایکروسافت روبرو میشم، مهدی جان کجایی ؟

----------


## رضا عربلو

ببین سکیوریتی که توسط Net Configuration که در  سه سطح Enterprise و Machine و User برقرار می شود  بالاتر از سطح کد می باشد. در واقع نیز بایستی چنین باشد، 
و در غیر این صورت شما می توانید یک برنامه مخرب بنویسید که خود را تراست بکند و از تمام لایه های امنیتی شما بگذرد و اجرا شود. و این یعنی یک نقض امنیتی.
در واقع در مدل سکیوریتی چند لایه ای، معمولاً لایه های بعدی برای محدودتر کردن بکار می روند تا برای افزایش سطح دسترسی.
امیدوارم تونسته باشم خوب توضیح داده باشم.

----------


## alirzn

خودمم دقیق نمی دونم اشسکال کار کجا بود اون مراحلی که گفتی رو با دقت دوباره انجام دادم درست شد. واقعا ممنون از لطفتون.




> خوشحال شدم که بلاخره به جواب رسیدی.
> نگفتی اشکال کارت از کجا بود؟ همون راهی که من گفته بودم را رفته ای پس چی رو اشتباه انجام داده بودی؟

----------


## alirzn

با اون راهی که گفتید میشه package فایل msi ساخت میشه این کارو کرد و بر روی تمام client ها load کرد و مشکل حل میشه.




> ببین سکیوریتی که توسط Net Configuration که در سه سطح Enterprise و Machine و User برقرار می شود بالاتر از سطح کد می باشد. در واقع نیز بایستی چنین باشد، 
> و در غیر این صورت شما می توانید یک برنامه مخرب بنویسید که خود را تراست بکند و از تمام لایه های امنیتی شما بگذرد و اجرا شود. و این یعنی یک نقض امنیتی.
> در واقع در مدل سکیوریتی چند لایه ای، معمولاً لایه های بعدی برای محدودتر کردن بکار می روند تا برای افزایش سطح دسترسی.
> امیدوارم تونسته باشم خوب توضیح داده باشم.

----------


## alirzn

سلام:
آقا من اون فایل msi رو توی group policy گذاشتم و بر روی شبکه load کردم اما بر روی client ها اجرا نشد. من چطور میتونم همین کارارو با فایل batch بسازم؟ دستورش چیه؟
یا حتی نمیشه در هنگام یا قبل از نصب framework این تنظیمات رو کنترل کنیم که fulltrust باشه؟




> ببین سکیوریتی که توسط Net Configuration که در سه سطح Enterprise و Machine و User برقرار می شود بالاتر از سطح کد می باشد. در واقع نیز بایستی چنین باشد، 
> و در غیر این صورت شما می توانید یک برنامه مخرب بنویسید که خود را تراست بکند و از تمام لایه های امنیتی شما بگذرد و اجرا شود. و این یعنی یک نقض امنیتی.
> در واقع در مدل سکیوریتی چند لایه ای، معمولاً لایه های بعدی برای محدودتر کردن بکار می روند تا برای افزایش سطح دسترسی.
> امیدوارم تونسته باشم خوب توضیح داده باشم.

----------


## رضا عربلو

> سلام:
> آقا من اون فایل msi رو توی group policy گذاشتم و بر روی شبکه load کردم اما بر روی client ها اجرا نشد.


ببین قبل از قرار دادن فایل msi در داخل گروپ پالیسی بایستی مطمئن شوی که دات نت فریم ورک در کلاینت هایت نصب شده است و گرنه پکیج فوق بر روی کلاینتت نصب می شود و چون دات نت فریم ورک در کلاینتت نصب نیست هیچ اثری ندارد و در ضمن بعد از نصب دات نت فریم ورک در کلاینت دیگر پکیج فوق دوباره اجرا و نصب نخواهد شد (هر پکیجی در گروپ پالیسی فقط یکبار اجرا خواهد شد) مگر آنکه یک پکیج جدید دوباره ایجاد کنی و در گروپ پالیسی قرار دهی.


در مورد فایل بچ هم قبلاً توضیح داده ام.

----------

