首页 > 解决方案 > 以管理员身份运行 cmd 但设置适用于登录用户

问题描述

我正在编写一个需要以管理员身份运行的 Visual Basic 程序才能正确执行批处理文件中的某些命令。但是,由于这会更改运行程序的用户,因此当我在批处理文件中执行命令时,它们会在该管理员帐户下应用这些更改。

是否有任何方法(无需获取用户密码)来获得 UAC 权限,以便当批处理文件作为管理员帐户运行时,但设置适用于当前登录的用户配置文件?

该程序在应用程序清单中使用“requireAdministrator”,因此该管理员帐户正在调用 Process.Start 等所有命令。

标签: vb.netbatch-filecmduac

解决方案


要以管理员身份运行 CMD,我这里有一个小的 VBScript 文件可以做到这一点:

CreateObject("Shell.Application").ShellExecute "C:\Windows\System32\cmd.exe ",,,"RunAs",1

如果您尝试在 UAC 提示符下以管理员身份运行,这是不可能的,因为这将是 Windows 上的重大安全漏洞。

另一个提示,如果你想运行一些批处理命令,最好创建一个批处理文件而不是运行多个命令。要以管理员身份运行该批处理文件,请使用:

CreateObject("Shell.Application").ShellExecute "C:\Windows\System32\cmd.exe /c BatchFile.bat",,,"RunAs",1

请注意,我不知道如何在 Visual Basic 中编码,这是 VBScript 的解决方案。

如果这不是你的答案,请告诉我。


推荐阅读