PDA

View Full Version : Login کردن به یک کامپیوتر در شبکه



mamali_programer
یک شنبه 07 بهمن 1386, 15:01 عصر
سلام دوستان
اولش بگم که سرچ کردم ولی اون چیزی که منظورم بود پیدا نکردم
من یک برنامه نوشتم که برای کامپیوتر های موجود در شبکه پیغام میفرسته
وقتی از طریق MyComputer به کامپیوترها Login میشم و بعد از برنامه استفاده میکنم برنامم مشکلی نداره
ولی وقتی میخواهم فقط با برنامم Login بشم پیغام Access Denied میده

reza_rad
یک شنبه 07 بهمن 1386, 15:16 عصر
وقتی از طریق MyComputer به کامپیوترها Login میشم و بعد از برنامه استفاده میکنم برنامم مشکلی نداره
ولی وقتی میخواهم فقط با برنامم Login بشم پیغام Access Denied میده
روی دامین کار می کنید یا WorkGroup ؟

mamali_programer
شنبه 13 بهمن 1386, 11:05 صبح
دوست عزیز روی دامین کار میکنم

reza_rad
شنبه 13 بهمن 1386, 11:19 صبح
دوست عزیز روی دامین کار میکنم
یا فولدری که می خواهید بهش دسترسی داشته باشید روی هر کامپیوتری که هست برای EveryOne شیر باید باشد. در اینصورت نیاز به تغییر در برنامه ندارید.
یا اینکه به یک یوزر خاص دسترسی بدهید و از داخل برنامه اول با این یوزر و پسوردش به اون فولدر لاگین کنید و بعد کار کنید. برای اینکار باید از net use استفاده کنید. اگه این روش رو کار می کنید بگید تا طرز استفاده از net use رو بهتون بگم.

raravaice
شنبه 13 بهمن 1386, 12:03 عصر
سلام



از داخل برنامه اول با این یوزر و پسوردش به اون فولدر لاگین کنید و بعد کار کنید. برای اینکار باید از net use استفاده کنید. اگه این روش رو کار می کنید بگید تا طرز استفاده از net use رو بهتون بگم.


جناب راد منظورتون همون net use توی command line هست یا خود دات نت هم چنین دستوی رو داره؟

ممنون

reza_rad
شنبه 13 بهمن 1386, 12:19 عصر
جناب راد منظورتون همون net use توی command line هست یا خود دات نت هم چنین دستوی رو داره؟
دقیقا منظورم همون net use کامند لاین هست. می تونید این کامند رو از طریق دات نت اجرا کنید و ...

raravaice
شنبه 13 بهمن 1386, 12:25 عصر
جسارت منو ببخشید که ادامه میدم

پس با این تفاسیر باید برای هر نشت یکبار net use اجرا بشه راهی نداره که نشت فقط و فقط 1 بار ایجاد بشه یعنی احراز هویت 1 بار برای برنامه انجام بشه و تا پایان کار برنامه به همون صورت باقی بمونه یعنی برای هر درخواست جدید از سوی برنامه نیازی به اعمال احراز هویت نباشه؟

با تشکر

reza_rad
شنبه 13 بهمن 1386, 13:03 عصر
پس با این تفاسیر باید برای هر نشت یکبار net use اجرا بشه راهی نداره که نشت فقط و فقط 1 بار ایجاد بشه یعنی احراز هویت 1 بار برای برنامه انجام بشه و تا پایان کار برنامه به همون صورت باقی بمونه یعنی برای هر درخواست جدید از سوی برنامه نیازی به اعمال احراز هویت نباشه؟
از اونجایی که کاربران مختلف با برنامه شما کار می کنند و این کاربران در active directory یوزرنیم و پسوردهای مختلفی دارند. برنامه شما بطور پیش فرض فقط اون مسیرهایی رو مجاز هست ببینه و دسترسی داشته باشه که کاربری که این برنامه داره روی سیستمش اجرا میشه بهشون دسترسی داره. به همین دلیل گفتم که یا باید everyone شیر باشه. یا اول برنامه با یک یوزر خاص که به اون آدرس دسترسی داره لاگین بشه توی اون مسیر و یک map network drive ازش ساخته بشه. از اون به بعد در طول مدتی که برنامه در حال اجراست نیازی به لاگین مجدد نیست.
می تونید این رو به این صورت هم تست کنید:
اول با یوزر نیم و پسوردی که به دایرکتوری مورد نظر دسترسی داره از طریق mycomputer روی اون فولدر لاگین کنید. و بعد برنامه رو اجرا کنید. خواهید دید که برنامه بدون مشکل کار می کن:

وقتی از طریق MyComputer به کامپیوترها Login میشم و بعد از برنامه استفاده میکنم برنامم مشکلی نداره
ولی وقتی میخواهم فقط با برنامم Login بشم پیغام Access Denied میده
این همون کاریه که شما باید با net use و از طریق برنامه انجام بدید.

mamali_programer
شنبه 13 بهمن 1386, 13:10 عصر
ممنون از همه دوستان
میشه یک متد یا کلاس به من معرفی کنم
من توی Object Browserگشتم ولی چیزی به این اسم پیدا نکردم

raravaice
شنبه 13 بهمن 1386, 13:20 عصر
محمد جان سئوال من هم همین بود که دات نت چنین آبجکتی داره یا نه.

منظور از net use "که جناب راد فرمودند" دستور اجرایی net با پارامتر use هست که کامندای مخصوص به خودشو داره شما cmd رو باز کن


net use /?
رو تایپ کن تا با پارامتراش آشنا بشی

حالا توی دات نت این برنامه رو با System.Diagnostics.Process و متد Start اجرا کن

موفق باشی

reza_rad
شنبه 13 بهمن 1386, 13:36 عصر
این یک نمونه کد:

//Login to source directory
String cmdString;

cmdString = "/c net use " + "\\192.168.0.3\SharedDoc" + " /user:" + myUser + " " + myPass;
System.Diagnostics.ProcessStartInfo prsInfo = new System.Diagnostics.ProcessStartInfo();
prsInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
prsInfo.FileName = "cmd.exe";
prsInfo.Arguments = cmdString;
System.Diagnostics.Process prs = System.Diagnostics.Process.Start(prsInfo);

mamali_programer
شنبه 13 بهمن 1386, 13:36 عصر
مرسی
الان هم دارم همین کارو میکنم ولی گفتم که



وقتی از طریق MyComputer به کامپیوترها Login میشم و بعد از برنامه استفاده میکنم برنامم مشکلی نداره
ولی وقتی میخواهم فقط با برنامم Login بشم پیغام Access Denied میده

raravaice
شنبه 13 بهمن 1386, 13:49 عصر
به احتمال زیاد برنامه شما تحت اکانتی اجرا میشه که دسترسی به اجرای پروسس cmd نداره.

برنامتون رو در سطح admin اجرا و تست کنید آیا باز هم با چنین پیامی مواجه میشید؟

mamali_programer
شنبه 13 بهمن 1386, 15:27 عصر
دوستان من کدی گفتیدو انجام دادم


string cmdString = "/c net use " + @"client1\C$" + " /user:" + "admin" + " " + "pass";
ProcessStartInfo prsInfo = newProcessStartInfo();
prsInfo.WindowStyle = ProcessWindowStyle.Hidden;
prsInfo.FileName = "cmd.exe";
prsInfo.Arguments = cmdString;
Process prs = Process.Start(prsInfo);
File.WriteAllText(@"\\client1\C$\text.txt", "test");

ولی بازم برای اجرای خط آخر پیغام Access denied میده

reza_rad
شنبه 13 بهمن 1386, 15:31 عصر
ولی بازم برای اجرای خط آخر پیغام Access denied میده
دوست عزیز از C$ استفاده نکنید. باید حتما فایل شما توی یک فولدر باشه و شیر شده باشه.
ضمن اینکه جای نوشتن client باید بنویسید:

\\client

mamali_programer
شنبه 13 بهمن 1386, 15:40 عصر
ولی من نمیخواهم که فلدری شیر کنم

reza_rad
شنبه 13 بهمن 1386, 16:02 عصر
ولی من نمیخواهم که فلدری شیر کنم
در اینصورت کارتون خیلی بیشتر میشه. و باید از API ها استفاده کنید. چون managed code دات نت تنها به شما امکان کار با شیر فولدر ها رو به اینصورت میده.