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