我正在尝试运行位于网络共享(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
这是预期的行为(尽管不寻常)。
当您从网络共享运行程序时,可以通过几种方式完成。
- 该共享映射到网络驱动器:例如
g:
->\\server\share
- 通过共享直接访问该共享:
\\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
在注册表编辑器中,找到并单击以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
在右窗格中,右键单击“新建”,然后单击“DWORD(32 位)值”。
- 将新的注册表项命名为
EnableLinkedConnections
。- 双击
EnableLinkedConnections
注册表项。- 在“编辑 DWORD 值”对话框中,在“数值数据”字段中键入 1,然后单击“确定”。
- 退出注册表编辑器,然后重新启动计算机。
答案3
某些安装程序需要通过 访问NT AUTHORITY\SYSTEM
,但网络驱动器是特定于用户的。EnableLinkedConnections
在这种情况下不会有帮助。
删除您现有的网络驱动器并在系统级别重新映射它。为此,创建一个带有操作:net.exe
和参数:(use z: \\host\share\
如果需要,提供密码)的计划任务,并将运行此任务的帐户更改为NT AUTHORITY\SYSTEM
。/PERSISTENT:yes
似乎不起作用,因此您需要将其安排在启动时运行
运行后,整个系统将看到网络驱动器。在 Windows 资源管理器中,它将显示为已断开连接,但它仍然可以工作。