您的位置:首页 > 其它

批处理命令执行顺序问题与以管理员权限运行命令的手记

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”证实我的判断,结果如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐