0

多年来,Windows XP(32 位)是我的开发桌面(个人项目)。我开发了许多爱好项目并将其作为开源分发,并且从不担心或烦恼在 Vista 中检查它(我只使用了一周的 Vista)。但是我的用户没有一个对我在 Vista 中的应用程序有太多抱怨。

现在我已经迁移到 Windows 7 64 位操作系统 (RTM)。我正在使用 Visual Studio 2008。我正在开发一个计划出售的应用程序。

我正在使用 SQLite DB 进行数据存储,一切都很顺利,直到我决定在我的笔记本电脑中安装我的第一个版本。繁荣!应用程序没有按预期工作。我发现即使我是管理员用户,该应用程序也无法写入数据库(它说只读)。

注意:在 Windows 7 中,即使登录用户具有管理员权限,它也会提示确认某个进程(有时甚至在驱动器之间复制粘贴)是否需要管理员权限。不确定这是否是新的。忽略这是否是旧的。

当我以“以管理员身份运行”运行应用程序时,它运行良好。

app.manifest 文件具有以下设置。

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

我了解我可以将其更改为以下任一

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

我的问题是如果我将设置更改为“requireAdministrator”会影响没有管理员权限的普通用户吗?

如何使我的数据库对普通用户可写?

此设置将如何影响 Windows XP 用户?

什么是让每个人都可以毫无问题地更新数据库的最佳配置?

这是我第一次面临这样的安全问题。有什么建议吗?

注意:我将在每个可能的操作系统中测试这个应用程序。我在 Vista 32 位操作系统(管理员用户)中运行了一个测试,它运行良好。但是我对 Windows 7 的体验让我感到困惑。

4

2 回答 2

3
  1. 是的,普通用户必须提供管理员凭据。
  2. 将您的数据库安装到用户可写位置或使用服务/IPC 为您写入数据库。
  3. 如果可能,每个用户的数据库。您可以将每个用户的内容存储在用户可写位置,例如 AppData。如果没有,则使用 service/IPC 为您执行写入操作。
于 2009-08-17T19:26:05.380 回答
0

最好的办法是安装目标操作系统的虚拟机。在您进行测试之前,您永远不会真正知道会发生什么。

于 2009-08-17T19:24:27.053 回答