微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Windows 10 上使用 Delphi 2007 无法在调试器下检测网络驱动器

如何解决在 Windows 10 上使用 Delphi 2007 无法在调试器下检测网络驱动器

这可能是我愚蠢,但我在检测网络驱动器是否已启动时遇到问题,但仅当在 IDE 中运行程序时 - 在 IDE 外部运行程序时,网络驱动器被正确检测到。 IDE 在 Windows 7 上运行良好。

虽然有问题的程序不同,但我可以通过创建一个新项目并将以下内容添加到 Forms OnActivate 事件中来重现该问题:

var
  bRet: Boolean;
  LTemp2: string;
  LFreeSpace: Int64;
  LTotalSpace: Int64;
begin
  LTemp2 := 'T:\';
  bRet := GetdiskFreeSpaceEx(PAnsiChar(LTemp2),@LFreeSpace,@LTotalSpace,nil);
  ShowMessage('GetdiskFreeSpaceEx: Drive T: is up? '+BoolToStr(bRet,True));
end;

假设我有一个网络驱动器 T:,如果我在 IDE 中运行程序,那么上面的总是返回 False,但是如果我从桌面快捷方式运行构建的程序,那么它返回 True。如果我在程序启动后通过单击按钮运行它,我会得到相同的行为。在根目录上执行 diskSize()FindFirst() 会得到相同的结果。

这是一个全新的 Windows 10 安装,而不是升级,全新安装 CodeGear 2007 并应用所有补丁。我已经尝试过“以管理员身份运行”和所有兼容模式回到 Windows 7。

我在做蠢事吗?

解决方法

在 R. Hoek 的深刻见解之后,虽然它没有完全解决问题,但至少足以解决问题。顺便说一句,至少在我的情况下,我是否以“以管理员身份运行”启动 Delphi 2007 并不重要。

我添加了一个连接到按钮的 TOpenDialog:一旦我运行它并在 T: 上选择一个文件,那么 GetLogicalDrives() 工作正常。

所以我现在怀疑我以管理员身份安装了 Delphi 2007 - 不确定如何,但我想我会重新安装所有东西。

即使这不能解决它,而且由于它只出现在 IDE 中而不是在生产使用中,如果 GetLogicalDrives() 返回 4,我可以添加代码来弹出一个 TOpenDialog。

奇怪。非常感谢大家。

顺便说一下,这个讨论的一个方面可能不清楚:Delphi 2007 是在用户帐户下运行的(它可以毫无问题地看到网络驱动器)——只有正在调试的程序看不到网络驱动器。这就是使用 TOpenDialog 解决问题的原因(直到 Delphi 或计算机重新启动)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。