لا يمكن الوصول إلى الملفات على محرك الأقراص المعينة مشاركة الشبكة من خدمة Windows

StackOverflow https://stackoverflow.com/questions/3098486

سؤال

لديّ مجلد مشترك على شبكة تم تعيينه على خطاب محرك أقراص ، يمكن الوصول إليه من 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top