【问题标题】:VB.NET on Vista, trying to get date (Today) causes security exceptionVista上的VB.NET,试图获取日期(今天)导致安全异常
【发布时间】:2010-09-09 00:46:40
【问题描述】:

我有一个 VB6 程序,最近有人帮我转换为 VB.NET

在程序中,当保存文件时,我用调用 Today() 函数获得的日期标记它们。

当我尝试在 Vista 中运行新的 VB.NET 代码时,它会为 Today() 引发权限异常。如果我在管理员模式下运行 Visual Studio Express(这是 2008 Express 版本),那么问题就不会发生,但显然我想最终得到一个独立的程序,它可以为所有用户运行而没有花哨的权限。

那么一个普通的Vista中的VB.NET程序怎么能得到今天的日期呢?

【问题讨论】:

    标签: vb.net security date


    【解决方案1】:

    使用DateTime.NowDateTime.Today。这些是完全托管的,不应引发安全异常。

    旧的 VB6 函数,例如 Len()Left()Right()OpenFile()FreeFile() 都存在于 .NET Framework 的 Microsoft.VisualBasic DLL 中。为了保持向后兼容性,它们都在非托管代码中调用旧函数。非托管代码需要特殊的安全权限,因为它可能很危险。

    尽可能尝试使用较新的 .NET 功能。它们通常更快(例如使用 Streams 的文件 IO)且更安全。

    【讨论】:

      【解决方案2】:

      当我尝试以下语句时:

      Dim result As String = Today()
      

      它给了我今天的日期,正如我所料,我正在 Vista 上运行 VB2005。你能用你正在使用的VB版本修改这个问题吗?另外,您可以尝试使用以下语句而不是 Today() 来查看它是否对您有效?

      Dim result As String = Now()
      

      【讨论】:

        【解决方案3】:

        Today() 函数应该在 Vista 上正常运行。我相信在幕后它只是评估 DateTime.Today 属性,所以它不应该抛出任何异常。如果您要将 VB 移植到 VB.NET,您可能应该继续使用 DateTime.Today 属性而不是 VB6 兼容性代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-18
          • 2019-04-10
          相关资源
          最近更新 更多