VB.NET sur Vista, en essayant d'obtenir la date (aujourd'hui) provoque une exception de sécurité

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

  •  09-06-2019
  •  | 
  •  

Question

J'ai un programme VB6 que quelqu'un m'a récemment aidé à convertir en VB.NET

Dans le programme, lors de la sauvegarde des fichiers, je les marque avec la date que je recevais en appelant la fonction Today ().

Lorsque j'essaie d'exécuter le nouveau code VB.NET dans Vista, une exception d'autorisation est générée pour Today (). Si j'exécute Visual Studio Express (version 2008 Express) en mode Admin, le problème ne se produit pas, mais je souhaite clairement me retrouver avec un programme autonome qui s'exécute pour tous les utilisateurs sans autorisations sophistiquées.

Comment un programme VB.NET normal sous Vista peut-il obtenir la date du jour?

Était-ce utile?

La solution

Utilisez DateTime.Now ou DateTime.Today . Celles-ci sont entièrement gérées et ne devraient pas générer d'exceptions de sécurité.

Les anciennes fonctions de VB6, telles que Len () , Gauche () , Droite () , OpenFile () , FreeFile () sont tous présents dans .NET Framework dans la DLL Microsoft.VisualBasic. Pour maintenir la compatibilité ascendante, ils appellent tous les anciennes fonctions dans du code non géré. Le code non géré requiert des autorisations de sécurité spéciales car il peut être dangereux.

Autant que possible, essayez d'utiliser les nouvelles fonctions .NET. Ils sont généralement beaucoup plus rapides (IO de fichier utilisant Streams par exemple) et plus sûr.

Autres conseils

Lorsque j'essaie l'instruction suivante:

Dim result As String = Today()

Cela me donne la date d'aujourd'hui, comme je m'y attendais, et j'utilise VB2005 sur Vista. Pouvez-vous modifier la question avec la version de VB que vous utilisez? Aussi, pouvez-vous essayer l'instruction suivante au lieu de Today () pour voir qu'elle fonctionne pour vous sans exception?

Dim result As String = Now()

La fonction Today () devrait se comporter correctement sous Vista. Je crois que dans les coulisses, il évalue simplement la propriété DateTime.Today, de sorte qu'il ne devrait lancer aucune exception. Si vous portez VB sur VB.NET, vous devriez probablement continuer et utiliser la propriété DateTime.Today plutôt que le code de compatibilité VB6.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top