我有一个 VB6 程序,最近有人帮我转换为 VB.NET
在程序中,当保存文件时,我用调用 Today() 函数得到的日期标记它们。
当我尝试在 Vista 中运行新的 VB.NET 代码时,它会为 Today() 引发权限异常。如果我在管理员模式下运行 Visual Studio Express(这是 2008 Express 版本),那么问题就不会发生,但显然我想最终得到一个独立的程序,它可以为所有用户运行而没有花哨的权限。
那么Vista中的普通VB.NET程序如何获取今天的日期呢?
使用DateTime.Now或DateTime.Today。这些是完全托管的,不应引发安全异常。
旧的 VB6 函数,例如Len()、Left()、Right()、OpenFile(),FreeFile()都存在于 .NET Framework 的 Microsoft.VisualBasic DLL 中。为了保持向后兼容性,它们都在非托管代码中调用旧函数。非托管代码需要特殊的安全权限,因为它可能很危险。
只要有可能,请尝试使用较新的 .NET 函数。它们通常更快(例如使用 Streams 的文件 IO)和更安全。
当我尝试以下语句时:
Dim result As String = Today()
正如我所料,它给了我今天的日期,而且我在 Vista 上运行 VB2005。你能用你正在使用的VB版本修改这个问题吗?另外,您可以尝试以下语句而不是Today()查看它是否对您有用吗?
Dim result As String = Now()
Today() 函数应该在 Vista 上正常运行。我相信在幕后它只是在评估 DateTime.Today 属性,所以它不应该抛出任何异常。如果您要将 VB 移植到 VB.NET,您可能应该继续使用 DateTime.Today 属性而不是 VB6 兼容性代码。