【发布时间】:2013-09-24 05:47:04
【问题描述】:
我是 vb.net 2010 的新程序员。 我创建了一个需要以管理员身份运行的应用程序(不通过 UAC)。这是一个恶意软件防护软件,将使用管理员权限安装。
我正在创建一个 Windows 服务,让它在系统启动时自动运行。 我创建的服务是本地系统服务。
本地系统服务在执行应用程序后未显示主应用程序窗口。 为了解决这个问题,我尝试使用此服务执行另一个应用程序。这个另一个应用程序将执行主应用程序。但我遇到了错误。
现在我的问题是如何通过本地系统服务以管理员身份运行应用程序?
这是我在 service(1st exe) 和 app starter exe (2nd exe) 上使用的代码
服务代码:
Protected Overrides Sub OnStart(ByVal args() As String)
Dim procStartInfo As New ProcessStartInfo
Dim procExecuting As New Process
If File.Exists(OwnDirPath & "appstarter.exe") Then 'realtime
With procStartInfo
.UseShellExecute = True
.FileName = OwnDirPath & "appstarter.exe"
.WindowStyle = ProcessWindowStyle.Normal
.Verb = "runas"
End With
procExecuting = Process.Start(procStartInfo)
End If
End Sub
App Starter code:
Sub main()
Dim procStartInfo As New ProcessStartInfo
Dim procExecuting As New Process
If File.Exists(My.Application.Info.DirectoryPath & "mfirewall.exe") Then With procStartInfo
.UseShellExecute = True
.FileName = "mfirewall.exe"
.WindowStyle = ProcessWindowStyle.Normal
.Verb = "runas"
End With
procExecuting = Process.Start(procStartInfo)
End If
End Sub
编辑: 现在我在从服务 exe 执行主应用程序 exe 时没有收到错误。但是主应用程序窗口是隐藏的,并且使用 SYSTEM 帐户运行。
如何在不传递用户帐户密码的情况下通过本地系统服务的用户帐户权限运行主应用程序?
请给我最好的建议。
谢谢 问候,
【问题讨论】:
-
Windows 服务本身通常没有 GUI。通常有一个单独的 GUI 应用程序,作为正常进程(而不是服务)运行,它通过某种进程间通信方式与服务交互,例如共享内存。 “使用此服务执行另一个应用程序”是什么意思?服务由服务控制管理器按需或在系统启动时启动。
-
您遇到的错误是什么?
-
我有 3 个 exe 文件。第一个文件将作为本地系统服务运行(没有任何 GUI)并将执行第二个 exe 文件(这个第二个 exe 文件不会显示任何 GUI,尽管它已被服务执行).. 因此,这个第二个 exe 文件将执行第三个主 exe 文件。现在我希望这个第三个 exe 文件以管理员身份运行而不要求 UAC。是否可以?或者在系统启动时以管理员身份运行应用程序而不询问 UAC 的任何替代方法?谢谢之前
-
我在帖子中添加了代码。请看一看。谢谢
-
问题是在任何特定时间点,登录用户可能有零个、一个或多个活动会话。如果没有人登录,则没有桌面可以放置 GUI 应用程序。如果有多个用户登录,它应该出现在哪个桌面上?突然让在管理帐户下运行的应用程序出现在非管理员用户会话中,这听起来也像是一个巨大的安全漏洞。
标签: vb.net