我希望我的批处理文件只能运行提升.如果未提升,请为用户提供一个选项,以便将批次重新启动.
我正在编写批处理文件来设置系统变量,将两个文件复制到Program Files位置,然后启动驱动程序安装程序.如果Windows 7/Windows Vista用户(启用了UAC,即使他们是本地管理员)在没有右键单击并选择"以管理员身份运行"的情况下运行它,他们将获得"拒绝访问"复制这两个文件并编写系统变量.
如果用户实际上是管理员,我想使用命令自动重启批处理.否则,如果他们不是管理员,我想告诉他们他们需要管理员权限才能运行批处理文件.我正在使用xcopy来复制文件,使用REG ADD来编写系统变量.我正在使用这些命令来处理可能的Windows XP机器.我在这个主题上发现了类似的问题,但没有任何关于将批处理文件重新启动为高架的问题.
我正在尝试为我的用户编写一个批处理文件,以便在他们的Vista机器上运行UAC.该文件正在重写其hosts文件,因此需要以管理员权限运行.我需要能够向他们发送一封包含.bat文件链接的电子邮件.所需的行为是,当他们右键单击文件并说"打开"时,他们将获得其中一个UAC对话框,使屏幕变暗并强制他们回答是否要授予应用程序以管理员身份运行的权限.相反,他们只是在命令行窗口看到"拒绝访问".
这可能有不同的做法吗?
从批处理文件中,我想测试我是否使用Administrator /提升权限运行.
选择"以管理员身份运行"时,用户名不会更改,因此不起作用.
如果有一个普遍可用的命令,它没有任何效果,但需要管理权限,那么我可以运行它并检查错误代码以测试权限.到目前为止,我还没有找到这样的命令.我发现的命令似乎返回一个非特定的错误代码,它可以指示任何内容,并且由于各种原因它们很容易出错.
我只关心Windows 7,虽然支持早期的操作系统会很好.
有人能告诉我如何在C#中获取Windows控制台应用程序的句柄吗?在Windows窗体应用程序中,我通常会尝试this.Handle.
我需要确定我的程序是否以完全管理员权限运行.我的意思是,如果打开uac(对于win vista/7),我需要确定该程序是否实际具有管理员权限(如果用户右键单击并选择"作为管理员运行")并且不受uac限制.我如何在C++中执行此操作?
启用 UAC 并使用管理帐户登录后,您将获得两个令牌:
提升的令牌;它启用了管理员组,具有高完整性(即,强制完整性标签 SID 为 S-1-16-12288)并且具有提升类型 TokenElevationTypeFull。
有限代币;这已禁用管理员组、中等完整性 (S-1-16-8192) 并具有提升类型 TokenElevationTypeLimited。
这三个因素总是这样匹配吗?也就是说,内核是否要求只有启用了管理员组的令牌才能具有高完整性和/或 TokenElevationTypeFull?
是否存在任何情况下进程不具有管理员权限但将以高完整性和/或 TokenElevationTypeFull 运行?
(问题的基本原理:答案会影响程序员安全测试提升权限的方式。例如,它出现在这里。)
假设您打开了Git Bash控制台并使用了一段时间,但是您忘记了是否以管理员身份打开它.
有没有办法在当前的控制台中检查这个,而不关闭并再次打开它?
I am writing a Windows batch file that automatically escalates itself to administrative permissions, provided the user clicks "Yes" on the User Access Control dialog that appears.
I am using a technique I learned here to detect whether we already have admin rights and another from here to escalate. When appropriate, the following script, let's call it foo.bat, re-launches itself via a powershell-mediated call to runas:
@echo off
net session >NUL 2>NUL
if %ERRORLEVEL% NEQ 0 (
powershell …Run Code Online (Sandbox Code Playgroud) 我有一个批处理文件,它一旦启动就存在(以管理员身份运行)并且不执行其中的命令,但如果我在命令行指定它,它运行正常并执行所有命令.
这是它的内容:
start /wait msiexec /x SetupServices.msi /qn /l* "SetupServices.uninstall.log"
start /wait msiexec /i SetupServices.msi /qn /l* "SetupServices.install.log"
Run Code Online (Sandbox Code Playgroud) 通过启动命令提示符或cmd /e:off使用setlocal disableExtensions(在批处理文件中)或通过注册表值排除它们 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions(通过将值设置为 0),称为“扩展”的功能将被禁用(默认情况下打开)。
这会带来哪些变化?
batch-file ×4
uac ×4
windows ×4
command-line ×3
cmd ×2
console ×2
c# ×1
c++ ×1
detect ×1
escaping ×1
git ×1
git-bash ×1
hwnd ×1
msiexec ×1
powershell ×1
quotes ×1
winapi ×1
windows-10 ×1