vb.net - 以管理员身份运行 cmd 但设置适用于登录用户
问题描述
我正在编写一个需要以管理员身份运行的 Visual Basic 程序才能正确执行批处理文件中的某些命令。但是,由于这会更改运行程序的用户,因此当我在批处理文件中执行命令时,它们会在该管理员帐户下应用这些更改。
是否有任何方法(无需获取用户密码)来获得 UAC 权限,以便当批处理文件作为管理员帐户运行时,但设置适用于当前登录的用户配置文件?
该程序在应用程序清单中使用“requireAdministrator”,因此该管理员帐户正在调用 Process.Start 等所有命令。
解决方案
要以管理员身份运行 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 的解决方案。
如果这不是你的答案,请告诉我。
推荐阅读
- multithreading - 多线程:输入队列处理
- python - 无法在 Python 中获取“channel_list”
- bootstrap-4 - 如何使用引导类避免两个 div 之间的空间?
- centos7 - 如何将 VOB 移动到具有新/不同 VOB 名称的新服务器(CentOS)
- error-handling - 如何使用自定义错误枚举修复不匹配的返回类型?
- python - 从 postgresql 发送邮件时出错
- azure-active-directory - 在 Azure 使用 Curl 命令访问令牌时,当我在我的应用程序中使用相同的命令时,它会给出错误:invalid_scope
- mysql - mysql中基于用户权限的行过滤
- javascript - 如何通过角度单选按钮启用或禁用提交按钮
- embedded - STM32F072C8T7 (Boot0) 使用 USB 的引导加载程序