VB.Net应用程序在Windows 10中作为后台进程启动

时间:2016-06-29 23:02:03

标签: vb.net windows-10

我们有一个内部开发的VB.Net Windows窗体应用程序,可以处理我们其他软件应用程序的所有自动更新。每当我在Windows 10中运行应用程序时,应用程序都在任务管理器的“后台进程”部分下启动。我可以让它在前台运行的唯一方法是以管理员身份运行它,即使我是VM上的管理员,我的UAC设置也完全关闭。这不会发生在Windows 7或8中,所以我想知道是否有什么我做错了或者有关Windows 10的内容已经改变了它必须作为管理员运行的地方。我们的其他应用程序似乎没有这个问题,它只是出于某种原因而特别是这个应用程序,但我似乎无法弄清楚有什么不同。

2 个答案:

答案 0 :(得分:0)

这是因为在Visual Studio中配置项目的方式。 以下是如何创建一个行为类似于后台进程的应用程序:

  • 在“项目设置”对话框中,禁用Enable application framework选项
  • 接下来,将Startup object更改为Sub Main
  • 最后,将一个Module添加到项目中并添加以下代码:

    Module Module1
        Sub Main()
            Application.Run()
        End Sub
    End Module
    

如果您运行应用程序(不是在IDE中,而是直接运行),它的行为就像您描述的那样。

只要不显示Form,应用程序将作为后台进程保留。只要显示一个,您将看到任务管理器将进程从后台进程列表移动到应用程序列表。

要对此进行测试,只需更改此版本的模块中的代码:

Imports System.Threading

Module Module1
    Sub Main()
        Dim tmp As New Thread(Sub()
                Thread.Sleep(3000)
                Using f As New Form1()
                    f.ShowDialog()
                End Using
            End Sub)
        tmp.Start()

        Application.Run()
    End Sub
End Module

应用程序将作为后台进程启动,3秒后将显示表单,成为前台进程。

答案 1 :(得分:0)

所以我进行了更多的错误处理,听起来像@xfx是正确的想法。应用程序在启动时犯了错误,因为它无法注册WCF服务的URL,因此它永远不会到达显示表单的位置。一旦我手动注册了WCF服务的URL并以管理员身份运行该应用程序,它就会正常显示和工作。