2016-08-24 83 views
0

我在批量编写的程序上有一个插件系统,如下所示; (感谢https://stackoverflow.com/users/3536342/davidpostillBATCH防止用户从程序外部打开文件?

:plugindragon 
echo. 
echo Plugins 
echo ============== 
dir /b plugins\*.cmd 
echo. 
echo Enter the name of the plugin you want to run. 
set /p plugin=root/plugins/[email protected]:~$ 
start "" plugins\%plugin% 
goto root 

有什么办法阻止我的程序的用户打开该而不运行pluginDragon脚本插件?因为他们不能直接进入插件文件夹并双击应用程序(因为它们都是批量编写的)。他们需要使用“终端”窗口打开它们,只有这一点。

+0

让他们隐藏文件? – SomethingDark

+1

还设置禁止执行的权限,并通过批处理文件中的'icacls'临时清除这些权限。 – wOxxOm

回答

0

这里是你的脚本的修正版,执行以下操作:

  • 使用attrib
  • 变化对文件的权限使用,使他们不能打开使隐藏文件和系统文件icacls

    :plugindragon 
    echo. 
    echo Plugins 
    echo ============== 
    dir /b plugins\*.cmd 
    echo. 
    echo Enter the name of the plugin you want to run (Exclude extension). 
    set /p plugin=root/plugins/[email protected]:~$ 
    
    :: Grant permission to access file 
        icacls "plugins\%plugin%.cmd" /grant everyone:F /T /C /Q>nul 2>&1 
    
    :: Unhide the file 
        attrib -h -s -r -a "plugins\%plugin%.cmd" >nul 
    
    start /wait "" plugins\%plugin%.cmd 
    
    :: Hide the file 
    attrib +h +s +r +a "plugins\%plugin%.cmd" >nul 
    
    :: Denies access to the file 
    icacls "plugins\%plugin%.cmd" /deny everyone:F /T /C /Q>nul 2>&1 
    
    goto root