Pergunta

Eu tenho um programa VB6 que alguém me ajudou recentemente a converter para VB.NET

No programa, ao salvar os arquivos, carimbo-os com a data que estava obtendo ao chamar a função Today().

Quando tento executar o novo código VB.NET no Vista, ele lança uma exceção de permissão para Today() .Se eu executar o Visual Studio Express (esta é a versão 2008 Express) no modo Admin, o problema não ocorrerá, mas claramente quero acabar com um programa independente que seja executado para todos os usuários sem permissões sofisticadas.

Então, como um programa VB.NET normal no Vista pode obter a data de hoje?

Foi útil?

Solução

Usar DateTime.Now ou DateTime.Today.Eles são totalmente gerenciados e não devem gerar exceções de segurança.

As antigas funções do VB6, como Len(), Left(), Right(), OpenFile(), FreeFile() estão todos presentes no .NET Framework na DLL Microsoft.VisualBasic.Para manter a compatibilidade com versões anteriores, todos eles chamam as funções antigas em código não gerenciado.O código não gerenciado requer permissões de segurança especiais porque pode ser perigoso.

Sempre que possível, tente usar as funções .NET mais recentes.Eles geralmente são muito mais rápidos (File IO usando Streams, por exemplo) e mais seguros.

Outras dicas

Quando tento a seguinte afirmação:

Dim result As String = Today()

Isso me dá a data de hoje, como eu esperava, e estou executando o VB2005 no Vista.Você pode modificar a pergunta com a versão do VB que está usando?Além disso, você pode tentar a seguinte afirmação em vez de Today() para ver se funciona para você sem exceção?

Dim result As String = Now()

A função Today() deve funcionar corretamente no Vista.Acredito que nos bastidores ele está simplesmente avaliando a propriedade DateTime.Today, portanto não deve gerar nenhuma exceção.Se você estiver portando VB para VB.NET, provavelmente deverá usar a propriedade DateTime.Today em vez do código de compatibilidade VB6.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top