الوصول إلى مشاركة الشبكة عبر Process.start (path) باستخدام بيانات اعتماد الشبكة
-
29-09-2019 - |
سؤال
انا استخدم هذه فئة الانتحال من أجل انتحال شخصية حساب المجال للوصول إلى حصة الشبكة مثل ذلك:
using(new Impersonartor(username, domain, password))
{
//Code Here
}
يعمل نسخ الملف من مشاركة الشبكة على ما يرام:
using(new Impersonartor(username, domain, password))
{
CopyAll(uncPath, localPath)
}
ومع ذلك ، فإن استخدام Process.start لعرض مشاركة UNC في Explorer يلقي "فشل تسجيل الدخول: اسم مستخدم غير معروف أو كلمة مرور سيئة":
using(new Impersonartor(username, domain, password))
{
Process.Start(uncPath)
}
شتبه في أن فئة الانتحار على خطأ ، لقد حاولت يدويًا توفير بيانات الاعتماد لعمليات التشغيل مثل ذلك:
System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo(uncPath);
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
System.Diagnostics.Process.Start(viewDir);
لا يزال لا فرح. لاحظ أنني متأكد من أن netcred (networkcredential) صحيح حيث اعتدت على إجراء اتصالات سابقة للموارد المصادقة.
لذا ، كيف يمكنني عرض مسار UNC في Explorer باستخدام بيانات اعتماد الشبكة؟
المحلول
واجهت نفس المشكلة اليوم وهنا ما نجح بالنسبة لي:
private void OpenNetworkPath(string uncPath)
{
System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
نصائح أخرى
بدلا من تمرير uncath إلى Process.Start
, ، حاول بدء "Explorer" في Process.Start
وتمرير UNCPATH ProcessStartInfo
'س Arguments
منشأه.
System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo("explorer.exe");
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
viewDir.Arguments = uncPath;
System.Diagnostics.Process.Start(viewDir);