我有一个 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 兼容性代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top