SabaSabouhi
چهارشنبه 16 اردیبهشت 1388, 12:56 عصر
با سلام
به دلیل خاصی مجبورم داخل یک برنامه یک فایل exe را با کاربری دیگر ( دارای دسترسی admin ) اجرا کنم. برای این کار از روش زیر استفاده کردم:
Process proccess = new Process();
SecureString secPassword = new SecureString();
secPassword.Clear();
for ( int i = 0 ; i<password.Length ; i++ )
secPassword.AppendChar( password[i] );
proccess.StartInfo.FileName = myExec;
proccess.StartInfo.UserName = username;
proccess.StartInfo.Password = secPassword;
proccess.StartInfo.UseShellExecute = false;
proccess.StartInfo.Arguments = myArguments;
return proccess.Start();
این کد رو با VS2008 در ویندوز ویستا نوشتم و به خوبی هم کار کرد.
اما وقتی برنامه رو روی XP اجرا میکنم. به محض اجرای «myExec» ویندوز خطا میده و برنامه رو قطع میکنه. اول گمان کردم اشکال از کد منه و کل کد رو توی try catch گذاشتم، اما مشکل حل نشد. گمان میکنم توی ویندوز XP نمیشه به این راحتیها یک proccess رو تحت یک کاربر دیگه اجرا کرد.
اگه دوستان راه حلی برای مشکل من دارن، خوشحال میشم اگه به من هم بگید.
با سپاس
صبا صبوحی
به دلیل خاصی مجبورم داخل یک برنامه یک فایل exe را با کاربری دیگر ( دارای دسترسی admin ) اجرا کنم. برای این کار از روش زیر استفاده کردم:
Process proccess = new Process();
SecureString secPassword = new SecureString();
secPassword.Clear();
for ( int i = 0 ; i<password.Length ; i++ )
secPassword.AppendChar( password[i] );
proccess.StartInfo.FileName = myExec;
proccess.StartInfo.UserName = username;
proccess.StartInfo.Password = secPassword;
proccess.StartInfo.UseShellExecute = false;
proccess.StartInfo.Arguments = myArguments;
return proccess.Start();
این کد رو با VS2008 در ویندوز ویستا نوشتم و به خوبی هم کار کرد.
اما وقتی برنامه رو روی XP اجرا میکنم. به محض اجرای «myExec» ویندوز خطا میده و برنامه رو قطع میکنه. اول گمان کردم اشکال از کد منه و کل کد رو توی try catch گذاشتم، اما مشکل حل نشد. گمان میکنم توی ویندوز XP نمیشه به این راحتیها یک proccess رو تحت یک کاربر دیگه اجرا کرد.
اگه دوستان راه حلی برای مشکل من دارن، خوشحال میشم اگه به من هم بگید.
با سپاس
صبا صبوحی