3

我的应用程序不应该执行任何管理任务,所以我希望普通用户帐户能够运行它。唯一的问题是,我的应用程序读取和写入数据库文件;如果运行 Windows 7(或 Vista)的用户在驱动器 C 中安装我的应用程序,驱动器的默认权限集配置不允许我的应用程序写入数据。

如何允许我的应用程序写入 C:,而不需要完全的管理权限?

4

5 回答 5

1

如果数据库文件在安装时存在,您可以在安装过程中授予用户对该文件的写入权限(普通用户默认没有此权限)。如果该文件需要由程序创建,则运行该程序的用户将需要修改 c 驱动器上的权限,这不是我推荐的。

于 2010-03-01T11:57:57.403 回答
1

我建议将您的 db 文件存储在 Documents and Settings / App data / your app / 目录中。它专门为此目的而存在。写入 C:/Program Files 不是很好的做法。如果在你的情况下这是可能的,那就是。

于 2010-03-01T12:01:00.593 回答
1

您需要打开 UAC(用户帐户访问)并将安全滑块设置到底部。然后您可以访问驱动器 C:,就像您在 Windows XP 中所做的那样。

于 2011-05-12T17:39:25.883 回答
0

我决定在设置过程中修改目录权限,所以我创建了一个 .exe 文件来更改其启动路径的权限,并允许所有用户访问该路径。我只是将该 .exe 文件包含在我的部署项目中,并创建了一个自定义操作,该操作将在安装的提交阶段运行该文件。

因为安装程序在安装的时候要求用户提供管理权限,所以我的.exe也享有管理权限,可以修改安装目录的权限。

在我的 .exe 中,我使用 Process 实例来运行 Windows 附带的 ACL 实用程序 (icacls.exe),如下所示:

ICACLS.EXE [TargetDir] /T /C /grant Users:F

(确保 [TargetDir] 不以“\”结尾,否则调用将失败。)

这使所有用户都可以完全控制对目标目录的访问。我也可以手动编写 .NET 代码和更改目录权限,但我有点懒!

但是,您可能希望彻底检查您的环境条件,以免您所做的事情成为您环境中的安全漏洞;但这很适合我。

我希望这可以帮助其他面临同样问题的人。

于 2010-12-18T14:38:51.877 回答
-1

默认情况下,用户应具有对驱动器 C: 的写入权限,如果没有,则您需要将读取和写入的目录更改为执行目录(C:/Program Files/Your App/)而不是根目录C:

你可以通过

String Path = Path.GetDirectoryName(Application.ExecutablePath);
于 2010-03-01T11:55:58.640 回答