VB.NET على نظام التشغيل Vista، تؤدي محاولة الحصول على التاريخ (اليوم) إلى حدوث استثناء أمني

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

  •  09-06-2019
  •  | 
  •  

سؤال

لدي برنامج VB6 وقد ساعدني أحد الأشخاص مؤخرًا في تحويله إلى VB.NET

في البرنامج، عند حفظ الملفات، أقوم بختمها بالتاريخ الذي كنت أحصل عليه عن طريق استدعاء الدالة Today().

عندما أحاول تشغيل كود VB.NET الجديد في نظام التشغيل Vista فإنه يطرح استثناء إذن لـ Today() .إذا قمت بتشغيل Visual Studio Express (هذا هو إصدار 2008 Express) في وضع المسؤول، فلن تحدث المشكلة، ولكن من الواضح أنني أريد أن ينتهي بي الأمر ببرنامج مستقل يعمل لجميع المستخدمين دون أذونات خيالية.

فكيف يمكن لبرنامج VB.NET عادي في نظام التشغيل Vista الحصول على تاريخ اليوم؟

هل كانت مفيدة؟

المحلول

يستخدم DateTime.Now أو DateTime.Today.تتم إدارتها بالكامل ولا ينبغي أن تتضمن استثناءات أمنية.

وظائف VB6 القديمة، مثل Len(), Left(), Right(), OpenFile(), FreeFile() كلها موجودة في .NET Framework في Microsoft.VisualBasic DLL.للحفاظ على التوافق مع الإصدارات السابقة، تقوم جميعها باستدعاء الوظائف القديمة في تعليمات برمجية غير مُدارة.تتطلب التعليمات البرمجية غير المُدارة أذونات أمان خاصة لأنها قد تكون خطيرة.

كلما أمكن، حاول استخدام وظائف .NET الأحدث.وعادةً ما تكون أسرع بكثير (إدخال/إخراج الملف باستخدام التدفقات على سبيل المثال) وأكثر أمانًا.

نصائح أخرى

عندما أحاول العبارة التالية:

Dim result As String = Today()

إنه يعطيني تاريخ اليوم، كما كنت أتوقع، وأنا أقوم بتشغيل VB2005 على نظام التشغيل Vista.هل يمكنك تعديل السؤال باستخدام إصدار VB الذي تستخدمه؟أيضًا، هل يمكنك تجربة العبارة التالية بدلاً من Today() لترى أنه يعمل بالنسبة لك دون استثناء؟

Dim result As String = Now()

يجب أن تعمل وظيفة Today() بشكل صحيح على نظام التشغيل Vista.أعتقد أنه خلف الكواليس يقوم ببساطة بتقييم خاصية DateTime.Today، لذا لا ينبغي أن يطرح أي استثناءات.إذا كنت تقوم بنقل VB إلى VB.NET، فمن الأفضل أن تمضي قدمًا وتستخدم خاصية DateTime.Today بدلاً من رمز التوافق VB6.

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