标题: [系统相关] 管理员身份运行批处理不支持拖拽的问题 [打印本页]
作者: 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"跳转到当前目录- @echo off&color 9F&mode con cols=40 lines=18&title 镜像合并工具(小程936制作)&cd /d "%~dp0"
- :: 特注:XP/7下本程序无法运行,请自备win8/10的PE。
- :: 推荐一个PE http://www.lipeicong.com
- if EXIST tem2 (echo 执行上次输入的配置?&echo [确认]输入任意内容后按回车键&echo [取消]直接按回车键&set /p kk=">:")
- if DEFINED kk goto w3
- del tem;tem2 >nul 2>nul
- :w1
- echo 快速合并多个wim镜像
- set /p na="请拖拽wim文件到这里再按回车键>:"
- if not DEFINED na goto w1
- if not EXIST %na% goto w1
- echo %na%>tem
- set nw=2
- :w2
- set /p nb="第%nw%个>:"
- if not DEFINED nb goto w3
- if not EXIST %nb% goto w2
- echo %na%;%nb%>tem
- set na=%na%;%nb%
- set nb=
- set /a nw+=1
- echo %nw% >tem2
- goto w2
-
- :w3
- if "%wb%"=="2" goto w2
- @echo off&set /a wa=2
- reg query "HKU\S-1-5-19" >nul 2>&1 || (echo 请右键“以管理员身份运行”&echo.&pause&exit)
- for /f "tokens=1 delims=;" %%a in (tem) do set aa=%%a
- mode con cols=70 lines=44&echo 请耐心等待。
- set /p wb=<tem2
- set /a wb=wb
- :1
- set /a ac=ad=1
- if "%wa%"=="%wb%" goto q
- for /f "tokens=%wa% delims=;" %%a in (tem) do set ab=%%a
- call :d
- call :wim
- set /a wa+=1&goto 1
-
- :wim
- cls&echo 请耐心等待。正在合并%aa%和%ab%:%ac%
- echo 子进度:%ac%/%ad% 以下为正在整合的系统
- DISM /Get-ImageInfo /ImageFile:%ab% /Index:%ac%
- DISM /Export-Image /SourceImageFile:%ab% /SourceIndex:%ac% /DestinationImageFile:%aa%
- set /a ac+=1
- if not %ac%==%ad% goto wim
- goto :eof
-
- :d
- echo 正在分析%ab%:%ad%
- DISM /Get-ImageInfo /ImageFile:%ab% /Index:%ad% >nul 2>nul
- if "%errorlevel%"=="0" set /a ad+=1&goto d
- goto :eof
-
- :q
- cls&echo 映像合并完成。以下为合并后的映像信息>1.txt
- DISM /Get-ImageInfo /ImageFile:%aa%>>1.txt
- start "" 1.txt
- 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
- reg query "hku\S-1-5-20">nul||(echo,%*)>"%~dp0uacno.txt"&&goto:uac
- reg query "hku\S-1-5-20">nul&&(
- for /f "usebackq delims=" %%i in ("%~dp0uacno.txt")do (
- echo,%%i
- )
- )
- pause
- goto:eof
- :uac
- .....
- exit
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |