当.CMD文件尝试复制文件时,“访问被拒绝”


0

我有一个.CMD文件,我通过右键单击Windows资源管理器中的文件来运行;我点击的文件作为参数传递给.CMD文件。 .CMD文件执行一些处理,然后将文件从一个文件夹复制到另一个文件夹。它在Windows XP上运行良好;在Windows 8上,当“copy”命令运行时,它返回错误消息“访问被拒绝”。

如果我使用Windows资源管理器复制文件,则会弹出一个对话框,其中显示消息“您需要提供管理员权限才能复制到此文件夹”。我点击“继续”,文件被复制。

我不知道UAC的细节,但我知道我不想更改权限以允许在没有干预的情况下复制文件。也就是说,我不希望整个.CMD文件以管理员身份运行。我想右键单击输入文件,运行.CMD文件,并在“copy”命令尝试运行时显示对话框;然后,我将单击“继续”以仅允许使用管理员权限运行复制命令。 (如果.CMD文件中存在复制文件的其他位置,或者需要管理员权限的任何其他操作,我希望再次出现该对话框,询问是否可以以管理员身份运行该操作)。

可以这样做吗?

Answers:


2

我担心你要做的事情没有简单的解决方案。

  • cmd 并不是非常具有交互性,脚本的目的是在没有人为关注的情况下运行。
  • 另一个限制在于UAC的工作方式:一个进程只有在它启动时才能被提升;进程启动后,它具有管理员权限。
    因此,在您的情况下,对于可能导致UAC提示的每个命令,您必须以两种方式进行编码:脚本在没有高程的情况下具有复制权限,以及高程。

您无法使用编程提升 cmd 除非您有一个额外的工具为您处理高程,然后继续使用常规权限失败的命令。


如果您对Windows XP的工作方式没有问题,最简单的解决方案是使用管理员权限运行脚本。

如果你的脚本的目的是复制一个单独的文件并且这就是所有脚本所做的那样,那么创建与UAC一起玩得很好的实用程序似乎有点矫枉过正。


您可以为脚本创建快捷方式.lnk文件。然后在快捷方式属性中 捷径 选项卡,单击 高级 按钮和检查 以管理员身份运行 。点击 两次保存更改。

单击此类快捷方式时,您将看到UAC提示符 Windows命令处理器 (因为它执行 .cmd 文件)。


我再次编辑了这个问题,试图更清楚,以防任何人可以提供帮助;但@Alexey Ivanov:我想你已经明确表示我想做的事情无法完成。我将尝试快捷方式(.lnk文件)。谢谢。
user184411

捷径无效;我会尝试sudowin。
user184411

@ user184411怎么没有快捷方式工作?
Alexey Ivanov

@ Alexey Ivanov:10月初我回到电脑后会告诉你的。
user184411

2

您需要以管理员身份打开命令提示符。

  1. 打开任务管理器,打开运行对话框(按 赢得 + [R 一起)和打字 taskmgr ,或按 按Ctrl + 转移 + 退出

  2. 点击 文件 - > 新任务

  3. 选中显示的框 使用管理权限创建此任务 。如果您没有看到这一点,则表示您的用户帐户是标准帐户,而不是管理员帐户。由于您可以单击UAC提示,我假设您是管理员。

  4. 类型 CMD 然后单击确定。您应该能够从此命令提示符运行复制命令,而不会收到任何权限错误。

或者,您可以按 赢得 + X 调出高级用户菜单,然后选择

power user menu

并选择 命令提示符(管理员) 从那里(或按A)


我编辑了这个问题,并添加了一些更多细节,以说明为什么这不是我正在寻找的答案。
user184411

1
@ user184411听起来你需要一个批处理文件。将复制命令放在批处理文件中,然后以管理员身份运行。
John Bensin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.