批处理命令执行顺序问题与以管理员权限运行命令的手记
2015-02-15 04:00
731 查看
我在大半年前写了一个作用在资源管理器右键获取管理员权限/恢复系统文件权限的东东,其中包括2部分:
1、注册表文件关联;
2、实际的调用参数。
因为这种操作需要管理员权限,而我没有找到通过命令行设定以管理员权限运行程序的方法命令,因此我使用的是“曲线救国”的方式:
— 创建一个设定了以管理员身份运行的、指向system32\cmd.exe的快捷方式,而注册表设定的命令行是这样的:
获取所有权
[HKEY_CLASSES_ROOT\*\shell\TakeAuthority\command]
@=cmd.exe "/k start "" "H:\TXT\SysSetting\admincmd.lnk" /c takeown /f "%1" && icacls "%1" /grant administrators:F
恢复系统权限
[HKEY_CLASSES_ROOT\Directory\shell\TakeAuthority\command]
@=cmd.exe "/c start "" "H:\TXT\SysSetting\admincmd.lnk" /c H:\TXT\SysSetting\ResetSystemFileAuthority.bat "%1"
但当时碰到的一个问题是,获取管理员权限时,第1次操作总是失败的,必须要执行2次操作才能完成所有权获取。当时估计原因是命令行执行顺序问题,即先执行了icacls.exe,后再智行takeown.exe,但因各种原因没有再研究下去。
今天想起来这个事情,决定使用“Process Explorer”证实我的判断,结果如下图:
1、注册表文件关联;
2、实际的调用参数。
因为这种操作需要管理员权限,而我没有找到通过命令行设定以管理员权限运行程序的方法命令,因此我使用的是“曲线救国”的方式:
— 创建一个设定了以管理员身份运行的、指向system32\cmd.exe的快捷方式,而注册表设定的命令行是这样的:
获取所有权
[HKEY_CLASSES_ROOT\*\shell\TakeAuthority\command]
@=cmd.exe "/k start "" "H:\TXT\SysSetting\admincmd.lnk" /c takeown /f "%1" && icacls "%1" /grant administrators:F
恢复系统权限
[HKEY_CLASSES_ROOT\Directory\shell\TakeAuthority\command]
@=cmd.exe "/c start "" "H:\TXT\SysSetting\admincmd.lnk" /c H:\TXT\SysSetting\ResetSystemFileAuthority.bat "%1"
但当时碰到的一个问题是,获取管理员权限时,第1次操作总是失败的,必须要执行2次操作才能完成所有权获取。当时估计原因是命令行执行顺序问题,即先执行了icacls.exe,后再智行takeown.exe,但因各种原因没有再研究下去。
今天想起来这个事情,决定使用“Process Explorer”证实我的判断,结果如下图:
相关文章推荐
- windows7系统有很多命令在命令行模式下运行,提示没有管理员权限,解决办法
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- linux下shell中执行命令的顺序问题
- CDH执行yarn命令报权限问题错误
- 关于在linux下用java程序执行linux命令的权限问题
- android系统执行命令权限问题(permission denied)
- vista win7 执行命令权限不足问题
- CM安装好集群之后在shell命令下执行hive 或者hbase操作遇到权限问题的解决方法
- 批处理命令运行时 不显示执行过程的设置
- C# windows权限问题 程序如何以管理员身份运行程序
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- 解决“要运行Visual Studio 2005 sp1,建议使用管理员权限”的问题
- php执行shell命令是的权限问题
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- C/C++/VC++/MFC怎样通过代码运行Dos窗口或以管理员身份运行DOS窗口,并执行一条指令或命令参数
- linux中执行命令权限不够怎样处理
- 批处理管理员运行当前路径问题