【问题标题】:start batch file from within vb.net as admin以管理员身份从 vb.net 中启动批处理文件
【发布时间】:2012-07-16 10:44:27
【问题描述】:

在我的应用程序中,我需要以管理员身份运行批处理文件才能运行。
到目前为止我一直在使用它,但我不记得如何使用 runas 功能,它允许它以管理员权限运行。

process.start("filelocation.bat")

我们将不胜感激。

【问题讨论】:

标签: vb.net runas


【解决方案1】:
Try
    Dim procInfo As New ProcessStartInfo()
    procInfo.UseShellExecute = True
    procInfo.FileName = (FileLocation)
    procInfo.WorkingDirectory = ""
    procInfo.Verb = "runas"
    Process.Start(procInfo)
Catch ex As Exception
    MessageBox.Show(ex.Message.ToString())
End Try

【讨论】:

    【解决方案2】:

    你可以试试这段代码:

    Dim proc as ProcessStartInfo  = new ProcessStartInfo()
    proc.FileName = "runas"
    proc.Arguments = "/env /user:Administrator filelocation.bat"
    proc.WorkingDirectory = "your_working_dir"
    Process.Start(proc)
    

    此代码将询问管理员密码并开始执行您的批处理文件

    编辑: 这是没有 cmd 窗口的替代方案

    Dim proc as ProcessStartInfo  = new ProcessStartInfo()
    proc.FileName = "filelocation.bat"
    proc.WorkingDirectory = "your_working_dir"  // <- Obbligatory
          proc.UseShellExecute = False
          proc.Domain = userDomain // Only in AD environments?
          proc.UserName = userName
          proc.Password = securePassword
    Process.Start(proc)
    

    这有点复杂,因为您需要在使用此代码之前获取输入值(用户名、密码、域),并且密码是您需要以专用方式构建的 SecureString

    Dim securePassword as New Security.SecureString()
    For Each c As Char In userPassword
        securePassword.AppendChar(c)
    Next c
    

    【讨论】:

    • 嗨,这并不像我想要的那样运行。我需要它以管理员身份运行,但首先在小对话框中以用户权限运行,而不是通过 cmd。谢谢
    • 更新了我的答案。这种替代解决方案需要您以某种方式从用户那里获取输入
    【解决方案3】:
        Imports System.Diagnostics
        Imports System.Security
    

    '很好的例子。只是添加命名空间

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2014-01-28
      • 2017-01-23
      • 2012-10-06
      相关资源
      最近更新 更多