2

我有一个程序,用户可以将输出会话保存到文本文件中。这很好用,但是当我尝试将文件保存到诸如 的位置时C:\,它会显示一个错误对话框:

You don't have permission to save to this location. Contact the administrator to obtain permission. Would you like to save to the Documents folder instead?

当我单击否时,认为它只会取消操作,我的应用程序崩溃了。我不希望我的应用程序需要管理权限,但是在尝试保存文件时,我如何要求用户提供权限(例如打开 UAC 对话框,如果需要,提供身份验证)。如果用户无法提供权限,我只想留在“保存文件”对话框上,直到用户选择他们有权保存到的位置,或者按取消。我真的不想在程序启动时询问权限,只是在用户将文件保存到他们需要权限的位置时。

顺便说一句,我目前在运行我的应用程序时以管理员身份登录,它是我计算机上运行 Windows Vista 的唯一帐户。

4

2 回答 2

4

应用程序仅在启动时提升。要模拟“在运行时且仅在需要时获取 UAC 权限”,您实际上需要对您的应用程序进行分区,以便它启动第二个进程(例如,写入文件)并且该进程可能会被提升。你可以这样做,但它需要做很多工作,但收效甚微或毫无益处。

UAC 的全部意义在于改变用户和应用程序对待硬盘的方式。C 的根不是写东西的聪明地方。使用 AppData 或 Documents,或创建您自己的文件夹,如 C:\MySpecialApp(将路径添加到配置文件)并在那里写入。如果您坚持写入 C 的根目录,那么您需要管理员权限,这没有多大意义。

于 2012-10-10T13:42:57.907 回答
-1

跟着这些步骤:

  1. 右键单击驱动器并选择属性,然后转到安全选项卡,然后单击编辑。

  2. 将打开一个新窗口,现在在“组和用户名”下,从列表中选择您要拒绝/允许访问特定文件夹的用户,现在在“用户权限”下选中修改旁边的拒绝/允许复选框(所有其他复选框将自动勾选)。

  3. 单击确定,然后在弹出 Windows 安全性窗口时单击是。

  4. 现在再次单击确定,您就完成了

于 2014-12-30T02:10:06.930 回答