文章目录
  1. 1. 删除相应注册表项
  2. 2. 创建计划任务
  3. 3. 为桌面的”计算机”右键添加”以管理员身份打开”菜单
  4. 4. 推荐参考

不知大家在使用 Win7/8 有没有遇到过拖拽文件到程序却无法打开的烦恼, 这个问题困扰了我很久, 今天终于有比较完美的方法, 感谢LEANKY给予的灵感.

可能有些朋友完全不会遇到这个问题, 其原因是他们一直都是开启和使用了内置管理员账号(Administrator), 在 Win8 中使用内置管理员账号会导致应用商城无法打开, 虽然可以通过修改组策略或注册表(导入下面注册表)来解决这问题. 但是我们回过头想想, 内置管理员账号所拥有的权限是很大的, 这会导致系统的安全性下降, 风险也会变大.

1
2
3
4
5
Windows Registry Editor Version 5.00

; 内置Administrator管理员帐户使用应用商店
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"FilterAdministratorToken"=dword:00000001

当 UAC 彻底关闭的情况下也可以解决这个拖拽打开问题, 这个设置虽然不会影响到 Win7 用户, 但对于 Win8 用户会非常不方便, 应用商场会无法打开, 打开时会提示 UAC 必须开启, 破坏了系统的完整性! 更重要的还是安全问题, 因为 UAC 停用后, 任何程序都可以不经过用户确认后启动! 导入注册表彻底关闭 UAC 的方法:

1
2
3
4
5
Windows Registry Editor Version 5.00

; 彻底关闭 UAC
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000

以上的方法是网上比较常见的解决方法, 然而这些方法都是以破坏系统安全性和完整性作为代价的, 经过我的测试并不可取.

参考了许多的文章, 原因是运行中的程序和文件管理器处于不同的权限运行, 权限低的程序无法访问权限高的程序, 而权限高的程序可以访问权限低的程序, 运行中的程序是管理员权限, 而文件管理器是 Users 权限或是低于管理员权限的权限, 所以这个时候我们只要提升文件管理器的权限.

起初我所想到的一个方法是结束掉当前的 Explorer.exe 进程, 然后使用任务管理器重新运行一个管理员权限的 Explorer 实例, 这个时候打开的文件管理器就有了与运行中的程序相同的管理员权限了(可能相同!), 这个时候应用商城是无法打开使用的, 做完需要的拖拽操作后, 就可以重新运行还原为当前用户权限的 Explorer 实例. 这个方法在我用过一次后就不想再用了, Explorer 换来换去烦不烦!

最后我参考了LEANKY的文章, 给了我很大的启发和灵感, 接下来就开始说明一下给”计算机”的右键菜单添加”以管理员身份打开”的方法, 这样打开后的”计算机”文件管理器就是管理员权限的了:

删除相应注册表项

  1. 打开注册表[HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}], 这个时候我们没有权限删除RunAs键值, 那就修改权限吧. 右键{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}项-权限...

    该注册表项权限

  2. 弹出该注册表项的权限窗口, 点击高级按钮

    该注册表项权限窗口

  3. 弹出高级安全设置对话框后, 点击所有者后面的更改, 在弹出的选择用户或组窗口中输入Administrators(不包括引号, 注意要加s), 2次确定后返回.

    替换所有者为Administrators

  4. 组或用户名处选择Administrators", 勾选Administrators 的权限完全控制后, 确定返回到注册表

    使Administrators拥有完全控制权限

  5. 这个时候就可以删除”RunAs”键值了, 右键RunAs键值, 删除.

    删除该注册表项中的RunAs键值

创建计划任务

  1. 打开运行, 输入taskschd.msc打开计划任务程序. 右键树状图中的任务计划程序(本地), 弹出的菜单中选择创建任务, 或者直接单击最右边操作列表中列出的创建任务.

    新建计划任务

  2. 在弹出的创建任务对话框中的常规选项卡中, 输入名称, 名称可以根据自己喜欢输入, 因为后面需用到这个”名称”, 建议跟我一样填入OpenComputerAsAdmin. 安全选项中勾选使用最高权限运行, 配置下拉菜单中选择Windows 8

    创建OpenComputerAsAdmin计划任务之常规选项

  3. 切换到操作选项卡, 点击新建按钮.

    创建OpenComputerAsAdmin计划任务之操作选项卡

  4. 操作下拉列表中选择启动程序, 程序或脚本中输入%SystemRoot%\explorer.exe, 添加参数填入,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}, 确定完成操作项目创建

    创建OpenComputerAsAdmin计划任务之操作选项卡,新建操作
    创建OpenComputerAsAdmin计划任务之操作选项卡,新建操作完成

  5. 切换到条件选项卡, 把只有在计算机使用交流电源时才启动此任务的勾去掉!

    创建OpenComputerAsAdmin计划任务之条件选项卡

  6. 切换到设置选项卡, 勾选允许按需运行任务, 去掉如果任务运行时间超过以下时间, 停止任务:前的勾, 在如果此任务已经运行, 以下规则适用:下拉菜单中选择并行运行新实例, 点击确定完成任务的创建.

    创建OpenComputerAsAdmin计划任务之设置选项卡
    完成创建OpenComputerAsAdmin计划任务

为桌面的”计算机”右键添加”以管理员身份打开”菜单

  1. 打开注册表导航到[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell], 右键新建一个项, 命名为OpenAsAdmin, 修改默认值为以管理员身份打开(&A). 新建一个字符串值键值, 命名为icon, 修改其值为%WinDir%\System32\imageres.dll,73

    修改注册表"计算机"添加右键菜单"以管理员方式打开"
    添加OpenAsAdmin项

  2. 右键OpenAsAdmin项, 新建一个项, 命名为command, 然后修改默认键值为schtasks /Run /TN "OpenComputerAsAdmin", 这里的OpenComputerAsAdmin`就是2中创建的计划任务名称, 如果你定义的名称不一样, 改成你的计划任务名称!

    在OpenAsAdmin项添加command子项

  3. OK, 回到桌面我们就可以看到"计算机"右键菜单中已经添加成功!

    成功创建以管理员身份打开菜单

当然你也可以省略3手动修改注册表, 使用导入注册表的方式更加方便快捷, 把下面内容保存为REG文件, (或下载, 提取密码:g7ae)直接导入即可:

1
2
3
4
5
6
7
8
9
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\OpenAsAdmin]
@="以管理员身份打开(&A)"
"icon"="%WinDir%\\System32\\imageres.dll,73"

; 注意: OpenComputerAsAdmin 改成你命名计划任务的名称!
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\OpenAsAdmin\command]
@="schtasks /Run /TN \"OpenComputerAsAdmin\""

问题比较完美的解决了, 以后只需要右键"计算机"菜单以管理员打开就能打开一个管理员权限的”计算机”了. 但还是不方便, 因为我们’只’把”计算机”提权, 当需要打开的文件在很深的目录时, 那就要先打开管理员权限的”计算机”, 然后就是麻烦的导航(一个个文件夹的打开), 如果在需要打开的文件所在的文件夹直接能以管理员权限打开这个文件夹就完美了, 我现在所想到的只是给文件夹增加一项菜单, 至于用什么命令还是未知数… 如果你有什么更好的方法, 请发帖讨论!

推荐参考

文章目录
  1. 1. 删除相应注册表项
  2. 2. 创建计划任务
  3. 3. 为桌面的”计算机”右键添加”以管理员身份打开”菜单
  4. 4. 推荐参考