2

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

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

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

那么Vista中的普通VB.NET程序如何获取今天的日期呢?

4

3 回答 3

10

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

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

只要有可能,请尝试使用较新的 .NET 函数。它们通常更快(例如使用 Streams 的文件 IO)和更安全。

于 2008-09-15T16:39:00.487 回答
0

当我尝试以下语句时:

Dim result As String = Today()

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

Dim result As String = Now()
于 2008-09-15T16:39:54.260 回答
0

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

于 2008-09-15T16:47:26.707 回答