PDA

View Full Version : اجرای یک پروسس تحت یک اکانت غیر از اکانت فعلی ویندوز



raravaice
چهارشنبه 12 دی 1386, 17:16 عصر
سلام
دوستان عزیز میخوام از داخل برنامه نوشته شده تحت دات نت یه برنامه دیگر رو اجرا کنم.
با اجرا کردنش مشکل ندارم

سئوال : مثلا من الان با اکانت one توی ویندوز هستم که دسترسی محدود داره ولی میخوام برنامه ای که از توی برنامه من اجرا میشه تحت اکانت دیگه ای اجرا بشه که دسترسی کامل داره مثلا administrator این کار چطور امکان پذیره.

سر نخ پیدا شده : با دستور runas که یکی از دستورات خود ویندوز هست این کار شدنیه ولی مواقعی رو در نظر بگیرید که اکانت کاربر دسترسی به اجرای این پروسس نداشته باشه.

ممنون

Sub Zero
چهارشنبه 12 دی 1386, 23:30 عصر
دوست عزیز اگه قرار بود یه کاربر با یوزر Limit بتونه یه پروسس که نیاز به آکانتAdmin داره رو اجرا کنه
ماکروسافت دیگه بحث Policy و انوع یوزرها (Limit-Admin) رو توی ویندوز قرار نمیداد . تقریبا میتونم بگم که این کار غیر ممکنه .
اینم کد دات نت :

Process.Start(fileName, userName, password, domain)
Process.Start(fileName, arguments, userName, password, domain)

رضا عربلو
چهارشنبه 12 دی 1386, 23:37 عصر
کاری که شما می خواهید انجام دهید جعل هویت و با impersonate نامیده میشود البته به شرطی که شما یوز و پسورد کاربر مربوطه را داشته باشید در غیر اینصورت همانطور که sub zero فرمودند غیر ممکن است.
اگر درست فهمیده باشم با یک سرچ تو codeproject یا msdn می تونی به جواب بررسی.

raravaice
پنج شنبه 13 دی 1386, 11:22 صبح
Sub Zero
ممنون از رانماییت من سورس رو نوشتم ولی نمیشه پسورد رو به جای CHAR یه سره از نوع String بریزی تو این متغییر ؟



Dim theSecurePassword As New System.Security.SecureString

theSecurePassword.AppendChar("a")
theSecurePassword.AppendChar("b")
theSecurePassword.AppendChar("c")
theSecurePassword.AppendChar("d")
theSecurePassword.AppendChar("e")
theSecurePassword.AppendChar("f")
Dim oInfo As ProcessStartInfo
oInfo = New ProcessStartInfo("ELSE.exe")
oInfo.UseShellExecute = False
oInfo.UserName = "administrator"
oInfo.Password = theSecurePassword
Process.Start(oInfo)
یه مسئله : متوجه هستم که یک کار بر LIMIT شده نمیتونه یه پروسس رو اجرا کنه که نیاز به اکانت Admin داره به همین منظور تو پروژه تحت شبکه میخوام از طریق بر نامه یه سری کارهای خاص رو که توی یه برنامه دیگه تعریف کردم انجام بده (صورت مسئله پیچیدست)
به هر حال ممنون از لطفت

Sub Zero
پنج شنبه 13 دی 1386, 19:08 عصر
ممنون از رانماییت من سورس رو نوشتم ولی نمیشه پسورد رو به جای CHAR یه سره از نوع String بریزی تو این متغییر ؟

Dim Pwd As String = "Your String"
Dim Pass As System.Security.SecureString = Nothing
For Each C As Char In Pwd.ToCharArray
Pass.AppendChar(C)
Next