当我以管理员身份运行程序时会发生什么?

当我以管理员身份运行程序时会发生什么?

我正在尝试运行位于网络共享(Linux CIFS 服务器)上的 Win7 exe。该共享是由非管理员创建的(请参阅Windows 7 访问共享文件夹的问题)。我可以读取和编辑并写入包含该 exe 的文件夹中的文件。我可以读取(即复制)该 exe。

但当我尝试跑步exe,通过双击并确定 UAC 对话框,或者右键单击“以管理员身份运行”,我得到:

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.

我必须先将 exe 复制到本地磁盘才能运行它吗?

我按照(尚未接受的答案)的食谱进行操作如何从网络共享运行 EXE?,但这似乎只授予读取权限,而不是 exe 权限。

(远距离相关:无法从网络驱动器运行 .exe

答案1

这是预期的行为(尽管不寻常)。

当您从网络共享运行程序时,可以通过几种方式完成。

  1. 该共享映射到网络驱动器:例如g:->\\server\share
  2. 通过共享直接访问该共享:\\server\share

当您以管理员身份运行程序时,第一个问题已经可能导致问题,我将在下面进行解释。

当我以管理员身份运行程序时会发生什么?

当您以管理员身份运行程序时,会创建一个新环境并加载管理员的配置文件。虽然它将使用您的用户拥有的权限,但它显然拥有管理员用户的额外权限。因此,不会创建任何到网络驱动器的映射,因此您的管理员用户的配置文件中不存在任何其他网络映射,因此 g: 不存在。

如果共享上的安全设置非常严格,管理员用户甚至可能也没有权限。

如何排除故障并克服该问题?

显然,您可以将文件复制到本地然后运行它,但我们假设您不想这样做。

您可以先以管理员身份启动命令提示符。然后输入以下命令:

net use g: \\server\share

替换驱动器和共享,以便它们与您现有的共享相匹配。

只要打开此命令提示符窗口,您就可以以管理员身份执行您的可执行文件,并且保证它可以正常工作。

如果您的用户没有权限\\server\share,则网络使用将会失败,并出现错误告诉您确切的这一点,以便您知道问题出在哪里。

如果权限足够,您也可以通过\\server\share以管理员身份运行可执行文件来访问可执行文件。这样就无需在其他环境中先拥有网络共享。

答案2

您必须将值 EnableLinkedConnections 设置为 1,如此 KB 文章中所述:

当 UAC 在 Windows 中配置为“提示输入凭据”时,无法通过提升的提示符使用映射驱动器
https://support.microsoft.com/en-us/kb/3035277

  1. 在注册表编辑器中,找到并单击以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

  2. 在右窗格中,右键单击“新建”,然后单击“DWORD(32 位)值”。

  3. 将新的注册表项命名为EnableLinkedConnections
  4. 双击EnableLinkedConnections注册表项。
  5. 在“编辑 DWORD 值”对话框中,在“数值数据”字段中键入 1,然后单击“确定”。
  6. 退出注册表编辑器,然后重新启动计算机。

答案3

某些安装程序需要通过 访问NT AUTHORITY\SYSTEM,但网络驱动器是特定于用户的。EnableLinkedConnections在这种情况下不会有帮助。

删除您现有的网络驱动器并在系统级别重新映射它。为此,创建一个带有操作:net.exe和参数:(use z: \\host\share\如果需要,提供密码)的计划任务,并将运行此任务的帐户更改为NT AUTHORITY\SYSTEM/PERSISTENT:yes似乎不起作用,因此您需要将其安排在启动时运行

运行后,整个系统将看到网络驱动器。在 Windows 资源管理器中,它将显示为已断开连接,但它仍然可以工作。

相关内容