PDA

View Full Version : حرفه ای: آیا dot.net framework روی سیستم نصب شده یا نه با php



blackmak
جمعه 15 مهر 1390, 17:51 عصر
روشی وجود داره که بشه فهمید .net framework رو سیستم نصب هست یا نه ؟

blackmak
جمعه 15 مهر 1390, 19:19 عصر
کسی چیزی نمیدونه ؟ اصلا اینو بیخیال . کدوم process تو task manager واسه .net frame work هستش ؟

#Elahe#
جمعه 15 مهر 1390, 23:28 عصر
سلام
متوجه نشدم سوال شما ربطش به php چیه
ولی پروسس مربوط به دات نت MSCORSVW.EXE هستش
برای اطلاع از ورژن دات نت نصب شده هم بفرمائید اینجا (http://support.microsoft.com/kb/318785)

blackmak
شنبه 16 مهر 1390, 13:34 عصر
دوست عزیز من هم اول google کردم . من هم فهمیدم که MSCORSVW.EXE مربوط به .net هستش منتها این نیست چون من هم رو لپ تاپم و هم رو pc نگاه کردم پیدا نگردم process ای به این نامو .
ربطش هم به php اینه که میخوام ببینم با php چطور میشه فهمید .net framework نصب یا اجرا شده . php توابعی واسه اینکار داره . DOTNET (http://docs.php.net/class.dotnet)
حالا اصلا توابع php و کار نداریم من اگه بتونم بفهمم دقیقن چه process ای مربوط به .net framework هستش خودم با php میتونم چک کنم. ممنون

blackmak
شنبه 16 مهر 1390, 15:22 عصر
خوب انگار .net framework اصلا چیزی نیست که تو پروسس بیاد. درواقع پروسس نیست.
حالا چطور باید فهمید نصب هست روی سیستم یا نه خدا میدونه

Unique
شنبه 16 مهر 1390, 18:52 عصر
از این کلاس استفاده کنید :


class NETFrameworkChecker
{
//General String / Array holders
var $original_au,$ua_succesParse,$ua_componants,$ua_do tNetString,$CLRTag = "";

//IsInstalled
var $installed = false;

//Version holders
public $major = 0,$minor = 0,$build = 0;

public function __construct($ua = false)
{
$this->original_au = $ua !== false ? $ua : $_SERVER['HTTP_USER_AGENT'];
$this->ParserUserAgent();
}

public function Installed(){return (bool)$this->installed;}

public function AUTag(){return $this->CLRTag;}

//Version Getters
public function getMajor(){return $this->major;}
public function getMinor(){return $this->minor;}
public function getBuild(){return $this->build;}

private function ParserUserAgent()
{
$this->ua_succesParse = (bool) preg_match('/(?<browser>.+?)\s\((?<components>.*?)\)/',$this->original_au,$this->ua_componants);
if($this->ua_succesParse)
{
$this->ua_componants = explode(';',$this->ua_componants['components']);
foreach($this->ua_componants as $aComponant)
{
$aComponant = trim($aComponant);
if(substr(strtoupper($aComponant),0,4) == ".NET")
{
//We have .Net Installed
$this->installed = true;
$this->CLRTag = $aComponant;

//Lets make sure we can get the versions
$gotVersions = (bool)preg_match("/\.NET.CLR.+?(?<major>[0-9]{1})\.(?<minor>[0-9]{1})\.(?<build>[0-9]+)/si",$aComponant,$versions);
if($gotVersions)
{
$this->major = (int)$versions['major'];
$this->minor = (int)$versions['minor'];
$this->build = (int)$versions['build'];
}
break;
}
}
}
}
}

این کد برای اینه که ببینین کاربر شما .net داره یا نه و ورژنش چنده ، با استفاده از HTTP_USER_AGENT میشه فهمید.

blackmak
شنبه 16 مهر 1390, 18:56 عصر
ممنون از پاسخ شما بالاخره یکی پیدا شد. ولی من میخوام بدونم رو سرور .net framework نصب هستش یا نه. نه روی کلاینت . این واسه clinet هستش یا server ?

Unique
یک شنبه 17 مهر 1390, 01:04 صبح
واسه کلاینت هستش ، روی سرور (که قائدتا حتما ویندوز هستش) کافیه یک فایل aspx بفرستین و با توابعش ورژن را در بیارین ، برای من جالبه چرا روی سرور ویندوز نیاز دارین ورژن .net را با php در بیارین در صورتی که خود asp .net قدرت انجامش را داره ! اگه واسه یه پروژه روی ویندوز دارین از php استفاده میکنید که اصلا توصیه نمیشه !

blackmak
یک شنبه 17 مهر 1390, 03:22 صبح
یه سیستم هتل داری با php هستش که یه exe به عنوان قفل براش گذاشتم به این صورت که سریال هارد رو میخونم و . . . من یه روش دیگه پیدا کردم واسه اینکار فکر کنم اگه این مسیرو چک کنم با php بهتر باشه C:\Windows\Microsoft.NET\Framework ورژنشم میتونم بگیرم. ولی اگه یه چیزی بود که تو process وجود داشت و رو start up بود و run شدنش مستلزم وجود .net framework خیلی بهتر بود. تو stack overflow هم مطرح کردم ولی راه حل ها کامل و درست نبود. به هر حال ممنون از شما که حداقل جواب دادی :لبخندساده: