Vb.net 以用户而不是管理员的身份启动进程

Vb.net 以用户而不是管理员的身份启动进程,vb.net,Vb.net,我有一个程序,我需要以管理权限运行,但作为用户启动一个进程。如果我使用environment.username,我会得到管理员,但我需要它是本地用户。关于如何在用户登录时而不是以管理员身份调用流程,您有什么想法吗 Dim proc As New System.Diagnostics.Process() proc = Process.Start("Avaya 7.0.exe", "") 如果您可以在您的程序中安全地保存要启动进程的witch上下文中用户的用户名/密码/域,则可以使用该进程。启动变

我有一个程序,我需要以管理权限运行,但作为用户启动一个进程。如果我使用environment.username,我会得到管理员,但我需要它是本地用户。关于如何在用户登录时而不是以管理员身份调用流程,您有什么想法吗

Dim proc As New System.Diagnostics.Process()
proc = Process.Start("Avaya 7.0.exe", "")

如果您可以在您的程序中安全地保存要启动进程的witch上下文中用户的用户名/密码/域,则可以使用该进程。启动变量,该变量在witch上下文中接受用户的登录数据,而不是要启动的文件名,以启动进程:

Public Shared Function Start (fileName As String, arguments As String, userName As String, password As SecureString, domain As String) As Process
在您的代码中,它将类似于:

Dim proc As New System.Diagnostics.Process()
Dim SS As New Security.SecureString
For Each C As Char In "MyPassword"
    SS.AppendChar(C)
Next

proc = Process.Start("Avaya 7.0.exe", "", "NonAdminUsername", SS, "MyDomain")

检查更多信息:

更改程序,使其不再需要管理员访问。一种方法是通过多个exe文件分解程序,这样可能仍然需要管理员访问的部分就可以针对这些内容运行提升版。如果您不知道这些区域是什么,那么首先您还没有做足够的工作来证明请求管理员访问的合理性。可能的重复项不在代码中存储用户名和密码。将它们存储在环境变量中并从中读取。网上有大量关于读取环境变量的信息。