Board logo

标题: [系统相关] 管理员身份运行批处理不支持拖拽的问题 [打印本页]

作者: wnsdt    时间: 2014-3-24 09:22     标题: 管理员身份运行批处理不支持拖拽的问题

本人遇到一个比较奇怪的问题:

在一台安装win7的系统中,右键管理员身份打开的批处理不支持拖拽文件夹获取路径,但是直接打开批处理就可以。但是另外两台win7系统,不存在以上问题。

于是,我又在虚拟机下运行的win7、8.1,测试发现所有右键管理员身份打开批处理,都不支持拖拽文件夹获取路径,但是直接运行没问题。

请问论坛内的高手,如何解释?另外发现,vista系统似乎不支持拖拽,无论是否管理员运行批处理?
作者: wnsdt    时间: 2014-3-24 10:43

本帖最后由 wnsdt 于 2014-3-25 09:32 编辑

通过搜索和测试,我找到了原因,和大家一起来研究研究:出现上面问题的关键就是当前用户是否为超级管理员、是否开启UAC(用户账户控制)

如果系统默认以超级管理员Administrator(改名无所谓)登录,无论是否开启UAC,右键管理员身份运行批处理都支持拖拽。
如果以非Administrator(即使也是管理员)账户登录,且开启了UAC,就会出现右键批处理不支持拖拽的问题。

解决办法:
一、用Administrator登录;
二、关闭UAC。

以上方法都需要重启或注销!

至于Vista,我在微软官方得到了解答:http://support.microsoft.com/kb/929457/en-us,看来是系统自身的限制。
作者: wnsdt    时间: 2014-3-24 12:23

本帖最后由 wnsdt 于 2014-3-25 09:35 编辑

现在有个设想:将批处理分成两个,主程序右键管理员身份运行,通过start调用另一个批处理来支持拖拽。但是测试发现主批处理如果是管理员身份运行,测试失败。

看来在开启UAC的情况下,批处理创建的子进程也被控制了,不知道自己的理解是否正确?希望论坛的高手和版主能帮忙!!!
作者: wnsdt    时间: 2014-3-25 09:35

希望版主或者论坛的高人们能看看,帮助一下
作者: newfish    时间: 2014-3-25 10:24

批处理能破UAC 感觉要出大乱子
作者: wnsdt    时间: 2016-5-30 09:22

有没有网友知道此问题的原因?
作者: 小程936    时间: 2016-6-3 11:10

关于这个问题……我以前写了个批处理,你参考下
其实用(set)>a导出变量表,再用for /f "delims=" %%i in (a) do set %%i导入变量表即可
注意:以管理员权限运行时,%cd%目录并非当前文件夹!因此记得开头加上cd /d "%~dp0"跳转到当前目录
  1. @echo off&color 9F&mode con cols=40 lines=18&title 镜像合并工具(小程936制作)&cd /d "%~dp0"
  2. ::  特注:XP/7下本程序无法运行,请自备win8/10的PE。
  3. ::  推荐一个PE http://www.lipeicong.com
  4. if EXIST tem2 (echo 执行上次输入的配置?&echo [确认]输入任意内容后按回车键&echo [取消]直接按回车键&set /p kk=">:")
  5. if DEFINED kk goto w3
  6. del tem;tem2 >nul 2>nul
  7. :w1
  8. echo 快速合并多个wim镜像
  9. set /p na="请拖拽wim文件到这里再按回车键>:"
  10. if not DEFINED na goto w1
  11. if not EXIST %na% goto w1
  12. echo %na%>tem
  13. set nw=2
  14. :w2
  15. set /p nb="第%nw%个>:"
  16. if not DEFINED nb goto w3
  17. if not EXIST %nb% goto w2
  18. echo %na%;%nb%>tem
  19. set na=%na%;%nb%
  20. set nb=
  21. set /a nw+=1
  22. echo %nw% >tem2
  23. goto w2
  24. :w3
  25. if "%wb%"=="2" goto w2
  26. @echo off&set /a wa=2
  27. reg query "HKU\S-1-5-19" >nul 2>&1 || (echo 请右键“以管理员身份运行”&echo.&pause&exit)
  28. for /f "tokens=1 delims=;" %%a in (tem) do set aa=%%a
  29. mode con cols=70 lines=44&echo 请耐心等待。
  30. set /p wb=<tem2
  31. set /a wb=wb
  32. :1
  33. set /a ac=ad=1
  34. if "%wa%"=="%wb%" goto q
  35. for /f "tokens=%wa% delims=;" %%a in (tem) do set ab=%%a
  36. call :d
  37. call :wim
  38. set /a wa+=1&goto 1
  39. :wim
  40. cls&echo 请耐心等待。正在合并%aa%和%ab%:%ac%
  41. echo 子进度:%ac%/%ad% 以下为正在整合的系统
  42. DISM /Get-ImageInfo /ImageFile:%ab% /Index:%ac%
  43. DISM /Export-Image /SourceImageFile:%ab% /SourceIndex:%ac% /DestinationImageFile:%aa%
  44. set /a ac+=1
  45. if not %ac%==%ad% goto wim
  46. goto :eof
  47. :d
  48. echo 正在分析%ab%:%ad%
  49. DISM /Get-ImageInfo /ImageFile:%ab% /Index:%ad% >nul 2>nul
  50. if "%errorlevel%"=="0" set /a ad+=1&goto d
  51. goto :eof
  52. :q
  53. cls&echo 映像合并完成。以下为合并后的映像信息>1.txt
  54. DISM /Get-ImageInfo /ImageFile:%aa%>>1.txt
  55. start "" 1.txt
  56. exit
复制代码

作者: qxlovexcx    时间: 2016-12-11 18:48

不知道你搞定了不,这个其实非常简单,你只要知道,你运行的管理员模式,和文件本身不是在一个模式下运行,当然不可以,切换到一个模式就可以了,很简单
作者: yunyan100    时间: 2017-8-20 09:36

回复 8# qxlovexcx


    可以标准说明下吗?我也是和lz同样的原因,我的是管理员,但不是administraor这个帐户,因为我是自建的帐号,uac开启,
作者: yunyan100    时间: 2017-8-20 09:38

回复 7# 小程936


    我和lz同样的问题,我的批处理运行时会转回本地路径,主要是无法拖入我要复制或进行处理的路径,只能填写,粘贴,
作者: yunyan100    时间: 2017-8-20 09:41

回复 2# wnsdt


    要是其他帐户下,以管理员权限运行能拖入就好了,我的现在就这个问题,因为要调用程序,又要管理员权限
作者: /zhqsystem/zhq    时间: 2017-8-20 16:22

  1. reg query "hku\S-1-5-20">nul||(echo,%*)>"%~dp0uacno.txt"&&goto:uac
  2. reg query "hku\S-1-5-20">nul&&(
  3. for /f "usebackq delims=" %%i in ("%~dp0uacno.txt")do (
  4.   echo,%%i
  5. )
  6. )
  7. pause
  8. goto:eof
  9. :uac
  10. .....
  11. exit
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2