Windows 7上的VB6应用程序无法访问映射的驱动器

时间:2012-01-11 01:09:35

标签: windows-7 vb6 windows-10 registry

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

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

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

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

5 个答案:

答案 0 :(得分:10)

添加此注册表设置为我解决了问题: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.   
  3. 找到并右键单击注册表子项HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System。

  4.   
  5. 指向“新建”,然后单击“DWORD值”。

  6.   
  7. 键入EnableLinkedConnections,然后按ENTER键。

  8.   
  9. 右键单击“EnableLinkedConnections”,然后单击“修改”。

  10.   
  11. 在“数值数据”框中,键入1,然后单击“确定”。

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

  14.   

答案 1 :(得分:5)

我相信你遇到了麻烦,因为偶然的驱动器映射是按用户进行的,而在UAC系统上,管理员组用户有两个不同的上下文(每个令牌一个:SU&提升)。

有系统级驱动器映射这样的东西,它是在系统用户(NT Authority \ System)下完成的。当您在此帐户下映射驱动器并持久映射它时,所有用户都可以查看和使用映射(根据文件的常用访问权限)。

执行此操作的正常方法是通过域级GPO(组策略对象),这意味着如果在公司托管LAN环境中,则可以贿赂本地盒子游戏。

在Workgroup机器中执行此操作的一种方法是通过AT命令从提升命令提示符将该字母映射为System:

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的回复相同。

我相信这就是你在这里的目标。

答案 2 :(得分: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 按预期工作。

希望这会有所帮助

ħ

答案 3 :(得分:0)

试试这个:

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

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

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

Here's a screenshot

本文作者是 howtogeek (source)。

答案 4 :(得分:0)

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

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

  1. 选择属性。
  2. 选择共享标签
  3. 选择高级共享
  4. 根据需要设置共享和用户权限。可能需要拥有本地管理员权限。