【问题标题】:Can not create, modify text file into Program Files Folder of windows 7无法在 windows 7 的 Program Files 文件夹中创建、修改文本文件
【发布时间】:2011-07-27 08:12:59
【问题描述】:

我使用 VS 安装项目制作了一个应用程序并制作了安装文件。这可以正常工作并在 winodw 7/vista 的 Program Files 文件夹中创建默认文本文件。但不能修改这些文件或创建任何新文件。

在应用程序运行期间需要创建、修改的文本文件很少,但在 windows 7/vista 中无法创建、修改文件。我对这些操作系统使用完全默认的管理员权限。如果 iuse C: root path 那么应用程序可以正常工作,或者对于 win XP 没有问题。

我认为 UAC 限制执行这些操作。但我不知道如何在应用程序启动时使用 vb.net 更改这些限制。

我找到了一个解决方案,如果手动更改用户权限,那么这个问题就解决了。 请按照以下步骤更改您的帐户设置。 控制面板-->用户帐户和家庭安全-->用户帐户-->更改用户帐户控制设置-->从不通知(设置标签以从不通知)。 此更改后需要重新启动系统。 现在可以像windows XP一样对windows 7进行所有更改。也可以对程序文件进行更改。

它工作正常,但需要在操作系统中手动进行这些更改。

但它不是有效的解决方案。

因此,如果有人知道如何通过编码进行这些更改,那就太好了。

【问题讨论】:

  • 不要在代码中进行这些更改!您需要遵守 UAC,而不是反对它。 任何 Windows 应用程序都不应假定它具有对 Program Files 目录的写入权限。永远。
  • 是的vista也有同样的问题
  • 是的,但这不是“问题”。这是一个解决方案。使用为此目的设计的应用程序数据目录。应用程序无法写入系统或程序目录。时期。除了“我不喜欢那样”之外,不确定这里的问题在哪里。艰难的。用户也不喜欢你胡乱处理系统文件。

标签: vb.net


【解决方案1】:

我严重怀疑你是否可以通过 windows7/vista 中的代码在 Program Files 文件夹下创建和删除文件。即使有办法,我也会认为这样做是一个糟糕的设计和一个安全漏洞。

如果您想在应用执行期间创建/修改/删除文件。你可以创建它们 "C:\Users\\AppData\Local\\ 并在那里做任何你想做的事情。

Program Files 文件夹不是存放临时数据的地方。

【讨论】:

  • gupta 感谢您的回答。是的,它不是复制、修改文件的好地方。 prg 文件也是保存已安装应用程序的文件夹。所以我的应用程序文件夹位于 prg 文件中,需要保留的文件很少,并对这些文件进行更改。
  • @muhammadhanif:与它是什么类型的数据无关。您没有应用程序目录的写入权限。这完全是设计使然。按照建议使用 AppData 文件夹。更多信息here.
  • @muhammad hanif,微软几十年来最大的障碍之一是开发人员在整个系统中编写文件的问题。在过去,人们会直接写入硬盘驱动器的根目录或 Windows/系统文件夹,从而导致文件膨胀和冲突,尤其是当每个人都只是将他们的文件命名为“config.ini”时。所以微软最终表态,说“程序”进入“程序文件”,程序数据进入“AppData”。你可能认为你有一个例外,但 20 年前的每个人也是如此。
  • 对。 “例外”是创建规则的原因。就像现在操作系统强加给开发人员的大多数规则一样。回到“过去”,操作系统实际上可以信任应用软件来负责并做正确的事情。那些日子早已一去不复返了,关于 SO 的此类问题如潮水般涌现,人们拒绝接受已提供给他们的好建议,就证明了这一点。
  • 我同意 Chris 和 Cody 的观点,作为应用程序开发人员,我们需要对我们的代码接触到操作系统的哪些部分负责。
猜你喜欢
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 2017-11-27
  • 2014-06-01
  • 2011-09-11
  • 1970-01-01
  • 2011-06-19
  • 2012-07-12
相关资源
最近更新 更多