9

我有一个 VB6 应用程序,它从 Windows 7 32 位机器链接到多个 POS 终端。POS 终端映射到 Windows 7 机器,我可以通过资源管理器或通过 cmdline/shell 从 Windows 7 机器访问 POS 终端。

该应用程序已更新到 ADO 2.8,并且我不再拥有源代码的所有其他控件和组件都已重新编写。经过一些恼人的打嗝后,我让应用程序在 Windows 7 计算机上重新编译而没有错误。

现在问题来了。VB6 应用程序无法查看或导航到任何映射的驱动器!我试过玩弄 UAC 设置;我已将应用程序设置为在 Windows XP SP3 模式下运行;我试过以管理员身份运行。这些东西(以及这些东西的许多排列)都不起作用。

关于如何使这项工作的任何建议?

4

5 回答 5

11

添加此注册表设置为我解决了这个问题:http ://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx 。

要变通解决此问题,请配置 EnableLinkedConnections 注册表值。此值使 Windows Vista 和 Windows 7 能够在过滤的访问令牌和管理员组成员的完整管理员访问令牌之间共享网络连接。配置此注册表值后,如果网络资源映射到访问令牌,LSA 会检查是否存在与当前用户会话关联的另一个访问令牌。如果 LSA 确定存在链接访问令牌,它会将网络共享添加到链接位置。配置 EnableLinkedConnections 注册表值

  1. 单击“开始”,在“开始程序和文件”框中键入 regedit,然后按 Enter。

  2. 找到并右键单击注册表子项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System。

  3. 指向新建,然后单击 DWORD 值。

  4. 键入 EnableLinkedConnections,然后按 Enter。

  5. 右键单击 EnableLinkedConnections,然后单击修改。

  6. 在数值数据框中,键入 1,然后单击确定。

  7. 退出注册表编辑器,然后重新启动计算机。

于 2012-06-25T17:19:06.097 回答
5

我相信您遇到了麻烦,因为临时驱动器映射是每个用户的,并且在 UAC 系统管理员组用户有两个单独的上下文(每个令牌一个:SU 和提升)。

有系统级驱动器映射之类的东西,它是在系统用户 (NT Authority\System) 下完成的。当您在此帐户下映射驱动器并对其进行持久映射时,所有用户都可以查看和使用该映射(受制于那里文件的通常访问权限)。

执行此操作的常规方法是通过域级 GPO(组策略对象),这意味着如果在公司管理的 LAN 环境中贿赂您的本地盒子骑师。

在工作组计算机中执行此操作的一种方法是通过 AT 命令从提升的命令提示符将字母映射为系统:

at 8:53 am "net use m: \\MediaShare\MyLibrary
    ThePW /user:MediaShare\TheUser /persistent:yes > nul"

那里的远程服务器是 MediaShare,用户 TheUser,密码 ThePW,上午 8:53 是未来一两分钟,以避免意外安排明天。

但是由于会话 0 隔离,这在 Vista 和更高版本上失败了!

所以...在Run CMD.exe as Local System Account使用第三种替代方法,这与 ForcePush 对How to map a network drive to be used by a service的回复中提到的相同。

我相信这就是你在这里所追求的。

于 2012-01-11T14:14:54.373 回答
0

不知道你有没有想过这个,但对我来说它是 ChDir 命令(即使上面有注册表修复)。

我的代码中有

ChDir "P:\Temp\VidCap\Cam1\" 'I almost never use ChDir Open "list.txt" For Output As #1

并且所有的 VB6 内置文件命令看起来都很直,尽管任何操作,没有错误,没有任何东西。我通过明确的路径解决了它(在我的代码中它是在一个字符串中,但你可以明确地拥有它):

dd = "P:\Temp\VidCap\Cam1\" Open dd & "list.txt" For Output As #1 按预期工作。

希望这可以帮助

H

于 2015-06-25T20:46:50.177 回答
0

尝试这个:

以管理员身份打开命令提示符,然后输入:

net use Z: \\IP Address\share /user:you passwd /persistent:Yes

根据需要更改“IP 地址”、“共享”名称以及您的用户名和密码。

这是一个屏幕截图

本文的作者是 howtogeek(来源)。

于 2021-06-19T11:25:57.070 回答
0

我有同样的问题。VB6 在尝试使用 Commondialog 方法访问 USB 和映射驱动器时不断崩溃,即使驱动器和文件都可以通过资源管理器正常访问。问题是驱动器未设置为共享。

通过在资源管理器中选择连接的 USB 驱动器然后右键单击来解决

  1. 选择属性。
  2. 选择共享选项卡
  3. 选择高级共享
  4. 根据需要设置共享和用户权限。可能需要具有本地管理员权限。
于 2021-07-09T09:02:45.253 回答