查看: 2395|回复: 10
收起左侧

[软件] 怎样解决非管理员账户添加Notepad++右键菜单的批处理的问题?

[复制链接]
aquablue
发表于 2015-10-16 09:31:42 | 显示全部楼层 |阅读模式
我用Win7,启用users组用户(日常工作用这个,不用admin管理员账户)。想要将Notepad++添加到右键,见附图。写了一个批处理,这个需要用管理员权限执行,才能修改注册表。可是右键管理员权限执行后,注册表的command变成了"C:\Windows\system32\notepad++.exe" %1,不是我想要的"D:\Programs\notepad++\notepad++.exe" %1。我是将Notepad++放在D:\Programs中。不知道这是怎么回事?怎样修改批处理命令,才能达到目的?

下面是批处理内容:
@echo off
color 1e
title 将Notepad++增加到右键菜单(或者去关联)
goto :menu

:menu
cls
echo.
echo.                        1  将Notepad++增加到右键菜单
echo.
echo.                        2  右键菜单去除Notepad++
echo.
echo.                        3  退出
echo.
echo.
echo.
:cho
set choice=
set /p choice=              请选择:
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
if /i "%choice%"=="1" goto addnpp
if /i "%choice%"=="2" goto delnpp
if /i "%choice%"=="3" goto end
echo 选择无效,请重新输入
echo.
pause
goto menu

:addnpp
set TheExe=notepad++.exe
set TheMenu=NotePad++
reg add "HKCR\*\Shell\%TheMenu%" /v "ICON" /t REG_SZ /d  "\"%cd%\%TheExe%\"" /f >nul
reg add "HKCR\*\Shell\%TheMenu%\command" /ve /t REG_SZ /d  "\"%cd%\%TheExe%\" %%1" /f >nul
echo.
echo 已经将Notepad++增加到右键菜单
echo.
pause
goto :menu

:delnpp
set TheMenu=NotePad++
reg delete HKCR\*\Shell\%TheMenu% /f >nul
echo.
echo 已经从右键菜单删除NotePad++
echo.
pause
goto :menu

:END


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
翼风Fly
发表于 2015-10-16 10:13:30 | 显示全部楼层
非管理员用户,那就放到发送到菜单吧。。能避免一些麻烦

而且干嘛要用%cd%,试试 %~f1 等方式呢?问题就在这里了
aquablue
 楼主| 发表于 2015-10-16 11:21:39 | 显示全部楼层
翼风Fly 发表于 2015-10-16 10:13
非管理员用户,那就放到发送到菜单吧。。能避免一些麻烦

而且干嘛要用%cd%,试试 %~f1 等方式呢?问题就 ...

如果用“发送到”,好像可以,但是将程序快捷方式复制到%APPDATA%\Microsoft\Windows\SendTo的批处理命令怎么写呢? 你刚才提到的%~f1是什么含义?我看应该是前后都需要有%才行吧?
风之咩~
发表于 2015-10-16 11:27:36 | 显示全部楼层
本帖最后由 风之咩~ 于 2015-10-16 11:30 编辑

set TheExe=D:\Programs\notepad++\notepad++.exe
以管理员运行默认执行根目录变为system32目录 所以必须指定全路径
或者在批处理头部使用cd /d进入批处理所在目录
翼风Fly
发表于 2015-10-16 11:29:35 | 显示全部楼层
aquablue 发表于 2015-10-16 11:21
如果用“发送到”,好像可以,但是将程序快捷方式复制到%APPDATA%\Microsoft\Windows\SendTo的批处理命令 ...

呃。。。不要想太麻烦,直接把快捷方式放到那里就可以了,亲试有效

那个参数就是那样用的,不需成对的%

Win10下的说明,不知道你那里的Win7是否适用:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

     批参数(%n)的替代已被增强。你可以使用以下语法:

         %~1         - 删除引号("),扩展 %1
         %~f1        - 将 %1 扩展到一个完全合格的路径名
         %~d1        - 仅将 %1 扩展到一个驱动器号
         %~p1        - 仅将 %1 扩展到一个路径
         %~n1        - 仅将 %1 扩展到一个文件名
         %~x1        - 仅将 %1 扩展到一个文件扩展名
         %~s1        - 扩展的路径只含有短名
         %~a1        - 将 %1 扩展到文件属性
         %~t1        - 将 %1 扩展到文件的日期/时间
         %~z1        - 将 %1 扩展到文件的大小
         %~$PATH:1   - 查找列在 PATH 环境变量的目录,并将 %1
                       扩展到找到的第一个完全合格的名称。如果
                       环境变量名未被定义,或者没有找到文件,
                       此修改符会扩展到空字符串

    可以组合修改符来取得多重结果:

        %~dp1       - 只将 %1 扩展到驱动器号和路径
        %~nx1       - 只将 %1 扩展到文件名和扩展名
        %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
                      并扩展到找到的第一个文件的驱动器号和路径。
        %~ftza1     - 将 %1 扩展到类似 DIR 的输出行。

    在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
    %~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
    使用


话说我刚意识到你可以进管理员。。。直接在管理员账户修改注册表不就行了。。。
风之咩~
发表于 2015-10-16 11:31:58 | 显示全部楼层
翼风Fly 发表于 2015-10-16 11:29
呃。。。不要想太麻烦,直接把快捷方式放到那里就可以了,亲试有效

那个参数就是那样用的,不需成对的 ...

你没考虑一下楼主的命令问题出在哪里么- -
还有 既然他连复制快捷方式到发送到目录都想用批处理 这就说明他想用批处理 你改让他直接改注册表
翼风Fly
发表于 2015-10-16 11:39:24 | 显示全部楼层
风之咩~ 发表于 2015-10-16 11:31
你没考虑一下楼主的命令问题出在哪里么- -
还有 既然他连复制快捷方式到发送到目录都想用批处理 这就说 ...

我一开始也想用你4楼的办法,用完整的绝对路径
不过我又担心楼主可能会将此批处理放在多个不同的电脑上(-_-)
然后就想避开管理员,于是就发送到了
我只是认为楼主是想传参到发送到吧
我承认我想的有点绕
风之咩~
发表于 2015-10-16 11:49:00 | 显示全部楼层
翼风Fly 发表于 2015-10-16 11:39
我一开始也想用你4楼的办法,用完整的绝对路径
不过我又担心楼主可能会将此批处理放在多个不同的电脑上 ...

不一定要用绝对路径 可以获取批处理当前路径
aquablue
 楼主| 发表于 2015-10-16 11:51:00 | 显示全部楼层
翼风Fly 发表于 2015-10-16 11:29
呃。。。不要想太麻烦,直接把快捷方式放到那里就可以了,亲试有效

那个参数就是那样用的,不需成对的 ...

嗯,是的,我刚才试了下,登录进入管理员账号,执行这个批处理,也是可以的。我同时试了下cd /d %~dp0,发现这个也可以。谢谢你的帮助。
aquablue
 楼主| 发表于 2015-10-16 11:52:15 | 显示全部楼层
翼风Fly 发表于 2015-10-16 11:39
我一开始也想用你4楼的办法,用完整的绝对路径
不过我又担心楼主可能会将此批处理放在多个不同的电脑上 ...

嗯,我也是考虑到程序会在不同电脑上使用,所以想用相对路径比较好。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-15 12:56 , Processed in 0.114082 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表