لا يمكن الوصول إلى الملفات على محرك الأقراص المعينة مشاركة الشبكة من خدمة Windows
-
29-09-2019 - |
سؤال
لديّ مجلد مشترك على شبكة تم تعيينه على خطاب محرك أقراص ، يمكن الوصول إليه من Windows Explorer ، من موجه الأوامر وكذلك من تطبيق WinForms الخاص بي دون مشكلة. يمكن الوصول إليه أيضًا من خدمة Windows الخاصة بي باستخدام مسار UNC.
ومع ذلك ، عندما أحاول الوصول إلى موقع الشبكة هذا باستخدام خطاب محرك محرك من خدمة Windows ، يفشل Access. تم تكوين خدمة Windows لاستخدام بيانات اعتماد الحساب الشخصية الخاصة بي ، والتي هي نفسها في جميع الحالات المذكورة أعلاه. أنا مسؤول.
تستخدم العديد من مواقع العملاء رسائل محرك الأقراص لمشاركات الشبكة ولا يمكنني دائمًا التحكم في ذلك وإجبارهم على تحديد مسارات UNC بدلاً من ذلك. يجب أن أكون قادرًا على الوصول إلى أسهم الشبكة باستخدام رسائل محرك الأقراص من خدمة Windows.
ما الذي يجب علي فعله لإعداد خدمة Windows الخاصة بي ، بحيث يمكنها الوصول إلى مجلدات مشتركة للشبكة التي يتم تعيينها لقيادة الحروف؟ خدمة Windows الخاصة بي مكتوبة في C#.
المحلول
آسف؛ لا يمكنك الوصول إلى محركات الأقراص المعينة من Windows Services. كما اقترح شنغ ، يمكنك استخدام عملية واجهة المستخدم للحصول على مسار UNC من محرك محرك معين ثم تمرير هذا إلى الخدمة ، والتي يجب أن تستخدم مسار UNC.
نصائح أخرى
محركات الأقراص المعينة هي كائنات جلسة. لذا فإن كل جلسة تفاعلية لها رسم خرائط خاص بها وجلسة الخدمة لديها رسم خرائط محرك أخرى. من أجل الحصول على مسار UNC الصحيح لمحرك محرك معين ، تحتاج إلى الاتصال بـ wnetgetConnection في الجلسة الصحيحة.
يمكنك استخدام أي طرق اتصال بين الجلسات لبدء الطلب والحصول على النتيجة في الخدمة ، مثل WCF ، والأنابيب المسماة ، والمآخذ ، إلخ.
مرحبًا Elan ، واجهت نفس المشكلة في مشروعي ووجدت حلاً
وهو العمل المتوقع اتبع خطواتي
if (api.Docusign_download(strDocuSignUserName, strDocuSignPassword, strDocuSignIntegratorKey, EnvelopeID, Environment.ExpandEnvironmentVariables("%temp%")) == true)
{
if (m_streamWriter1 != null)
{
m_streamWriter1.WriteLine(" This envelop id is Downloaded and update the table" + EnvelopeID + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\n");
}
fpath1 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '1' + ".pdf";
fpath2 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '2' + ".pdf";
if (System.IO.File.Exists(fpath1))
{
fso = new FileSystemObject();
// fso.CopyFile(fileLoc, "\\\\Tech-Pro-01\\D\\", true); i download the file in temp folder and copy file to unc path ur expected work on reverse like access file to unc path he does not work directly but work in in direct access like temp folder to services
fso.CopyFile(fpath1, UNC, true);
fso.CopyFile(fpath2, UNC, true);
fso.DeleteFile(fpath1, true);
fso.DeleteFile(fpath2, true);
//System.IO.File.Move(fileLoc, fileLocMove);
أنا فقط باستخدام البرنامج النصي للتطبيق القديم في كائن نظام ملف VB FSO
1 ، تأكد من تمكين الوصول إلى مسار الخريطة في iuser وخدمة خدمة الشبكة إلى الجهاز المعين المقدم 2 ، مع إضافة البرمجة النصية للنظام المرجعي
3 و UNC PATH مثال computername sharedName Folder Filename 4 ، Just fso.copyfile (Uncpath ، tempfoler ، true) 5 ، U Access A الخاص بك في مجلد TEMP يتوقعه ويعمل بشكل مثالي
وصول مجلد Temp "C: Windows Temp لأن Proceess يمكن أن يأخذ مجلد Windows Temp فقط
أتمنى أن يكون إيلان يعمل بشكل مثالي
شكرا مع تحياتي
Jagadeesh Govindaraj Pillai Jagadeesh1492@facebook.com