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 в библиотеке DLL Microsoft.VisualBasic.Чтобы поддерживать обратную совместимость, все они вызывают старые функции в неуправляемом коде.Неуправляемый код требует специальных разрешений безопасности, поскольку он может быть опасным.

Всякий раз, когда это возможно, попробуйте использовать более новые функции .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