MGH*_*MGH 6 delphi unc network-drive delphi-2007 windows-7
从我的Delphi程序写入Windows 7中的映射网络驱动器(P :)时遇到一些问题.例如,当我尝试时,ForceDirectories('P:\test\folder')我收到错误(找不到路径).
我尝试在代码(ForceDirectories('\\computername\share\test\folder'))中键入UNC路径并且可以正常工作.但是,ExpandUNCFileName('P:\')似乎没有用; 它返回'P:\'.在Windows XP上,ExpandUNCFileName('P:\')返回UNC路径.
如何在Windows 7上获取Delphi中的UNC路径,或以其他方式写入映射的网络驱动器?
经过进一步调查,就好像我在Windows中缺少某种初始化.我有另一个使用TcxShellComboBox(一个DevExpress组件)的应用程序(app2 ).导航到P:在组合框中,在app2中,调用ExpandUNCFileName在第一个应用程序中正常工作.与FileExistsP:下的on文件相同,在app2中导航到P:之前返回False,在计算机重启之后返回true.
hai*_*img 11
根据Microsoft知识库文章,如果启用了用户帐户控制,并且您从Windows资源管理器(非提升)映射网络驱动器,则提升的程序将无法访问该驱动器.引用:
如果用户登录到Windows Vista或Windows 7,并且启用了"用户帐户控制",则使用用户的筛选访问令牌的程序和使用该用户的完全管理员访问令牌的程序可以同时运行.由于LSA在两个单独的登录会话期间创建了访问令牌,因此访问令牌包含单独的登录ID.
映射网络共享时,它们将链接到当前进程访问令牌的当前登录会话.这意味着,如果用户将命令提示符(Cmd.exe)与筛选的访问令牌一起使用以映射网络共享,则不会为使用完全管理员访问令牌运行的进程映射网络共享.
由于您在评论中提到您运行Delphi"以管理员身份"(提升),这是您的问题.
解决方案:
如果您不需要,请不要运行Delphi.如果确实需要升级软件,请将其分为两部分(提升和非提升),并从第一部分访问映射的网络驱动器.然后使用提升的COM对象访问其他部分,或者只是通过执行单独的可执行文件.
从提升的网络提示符映射网络驱动器,以便提升的用户可以使用映射的网络驱动器:
一个.打开提升的命令提示符(以管理员身份运行"cmd.exe")
湾 类型net use p: \\computername\share\test\folder