有这个一个需求:
1、不允许当前用户访问某个文件夹
2、但是程序可以访问(新增、编辑、删除等操作)
结论是这样:创建一个管理员用户对指定文件夹有操作权限,同时拒绝其它用户的访问请求
步骤一:
net user 用户名 密码 /add
net localgroup administrators 用户名 /add
步骤二:将之前的用户授权允许访问指定文件夹,其他用户拒绝(需要用到icacls命令,net user命令)
@echo off
set user=%1
set dir=%2
echo y|icacls %dir% /setowner %user% /t /c /l
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" call :setright %%i
if not "%%j"=="" call :setright %%j
if not "%%k"=="" call :setright %%k
)
:setright
if "%1"=="%user%" @echo y|cacls %dir% /e /t /p "%1":F
if not "%1"=="%user%" @echo y|cacls %dir% /e /t /p "%1":N
OK,用户准备好之后可以用runas命令来执行,大概是这个样子
runas /user:用户名 待执行命令
需要说明的是这个runas命令需要手工输入用户密码,可以加/savecred参数保存,但这毕竟不方便
通过一番查找,发现有这样的工具可以替换runas,即CPAU.exe和lsrunase.exe
这两个工具都可以完成runas的操作,而且可以在命令行参数中加密码,密码还可以加密
But,我的目标程序必须使用管理员权限执行,所以直接通过以上两个程序运行时,会提示:“740 请求的操作需要提升”
反正就是没法以管理员权限运行
记得好像在命令行下执行需要管理权限的程序是可以的,会弹出UAC提示框,那么先以其它用户名密码运行一个命令行,然后在命令行中运行目标程序如何呢?答案是:可以,我了个去!
下载地址:CPAU程序