gpt4 book ai didi

vb6 - 如何将 VB6 应用程序从 XP 更新到 Vista?

转载 作者:行者123 更新时间:2023-12-04 22:12:24 26 4
gpt4 key购买 nike

我开发的 vb6 应用程序在 Vista 上有问题,原因很明显(写入程序文件,以及默认情况下不再允许的其他内容)。

  • 我应该在哪里存储应用程序数据或用户保存的文件?
  • 我是否也需要权限才能在那里创建文件夹和文件?
  • 还有哪些其他常见操作会导致问题?
  • 该程序有一个必须下载和注册文件的更新程序,发生这种情况时我该如何提升权限?

其中一些问题有明显的答案,但我想把明显的东西弄对。

最佳答案

根据您正在做的事情,您可能会陷入痛苦的世界。对于这些问题中的任何一个,都没有硬性快速的答案,但从现在正在经历同样问题的人那里,这就是我所知道的。

1) 我应该在哪里存储应用程序数据或用户保存的文件?

这取决于你想做什么。如果您希望每个用户使用它们,请将它们存储在 Users/AppData 中,如果您希望所有用户使用它们,请将它们存储在 Common/AppData 中

  If SHGetFolderPath(0, CSIDL_COMMON_APPDATA, -1, SHGFP_TYPE_CURRENT, sTempPath) = 0 Then
sCommonAppdata = Left$(sTempPath, InStr(1, sTempPath, Chr(0)) - 1) & "CompanyName\AppName"
End If

将其更改为用户 AppData 目录的 CSIDL_APPDATA。注意:对于 XP 和 Vista,这些映射到文件系统上完全不同的位置,因此当您调试时准备在不同的位置查看。

2) 我是否也需要权限才能在那里创建文件夹和文件?

您需要管理员权限才能在程序文件中写入任何内容,如果可能的话请不要这样做!我们目前running into issues VB 的 API 和标准 API 对 Program Files 中的文件的行为不同。

3)还有哪些常见的操作会导致问题?

有很多隐藏的陷阱。仅举几例,您不能通过 IPC 或命名管道与其他应用程序通信(我们有一个服务,我们通过托盘通知图标与之通信,必须完全重写)。您看到 UAC 通知的任何事情都非常困难。此外,如果没有管理员,您无法在 LOCAL_MACHINE 的注册表中写入任何内容,因此您要么必须坚持使用 LOCAL_USER,要么提高凭据(见下文)。

4) 该程序有一个必须下载和注册文件的更新程序,发生这种情况时如何提升权限(原文如此)?

祝你好运,我强烈建议你不要用 VB6 编写它,就像我说的那样,VB6 文件 API 访问文件的方式似乎与标准 API 不同。如果您需要提升权限,请参阅此 post有人好心地帮助了我。

关于vb6 - 如何将 VB6 应用程序从 XP 更新到 Vista?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/562154/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com