【问题标题】:Need Windows chmod777 Equivalent需要 Windows chmod777 等效项
【发布时间】:2012-07-11 10:35:36
【问题描述】:

我需要对一个文件设置权限,以便系统上的所有用户都可以对其进行读写。这与安装程序有关,所以我不知道提前的用户名。安装程序以管理员身份运行,因此日志文件之后需要管理员访问权限。所以我需要在安装过程中明确设置权限,这样引用程序就不需要以管理员身份运行。

本质上,我正在寻找一种可以为我提供相当于 Windows 中 chmod777 的解决方案。

我更喜欢适用于 Win7 和 WinXP 的解决方案。我想要一个通过命令行的解决方案,然后我可以编写脚本。或者使用 C# 或 java 的解决方案。

【问题讨论】:

  • Windows 应用程序不应要求对 Program Files 中的文件进行全局读/写。
  • 我同意@sixlettervariables。为什么不将文件存储在ProgramData(又名All Users\Application Data)中?
  • 你试过什么?设置 Windows 文件权限 c# 的快速 google 提供了大量有关如何执行此操作的链接。
  • 正如其他人所说,如果人们需要对文件进行读写访问,那么将其存储在 Program Files 下是不正确的地方。
  • 我省略了细节以保持简洁。该程序安装由多个不同程序使用的文件。需要更改权限的文件是日志文件。其中一个程序需要以“管理员”身份运行,否则它会崩溃。通过故障排除,确定该问题与文件的创建方式有关。由于安装程序需要以管理员身份运行,因此该文件具有相应的权限设置。更改日志文件的权限,解决了程序必须以管理员身份运行的问题。这是期望的行为。

标签: c# java windows permissions


【解决方案1】:

在C#中,可以获取NTAccount对象,获取文件的FileSecurity对象,使用FileSecurity对象的AddAccessRule方法设置权限。

有关详细说明,请参阅下面的 MSDN 论坛帖子。

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/c513ca26-9bf8-4e39-a993-4ebf90aaece6/

【讨论】:

    【解决方案2】:

    所有现代 Windows 操作系统都有一个名为“Everyone”的内置组,相当于 UNIX 的“其他”权限。即使是未登录的用户也是Everyone 组的一部分。从那里您可以授予“每个人”读取、写入和修改(“更改”)权限。如果你完全疯了,你可以给每个人“完全控制”,但这实际上允许他们获得所有权并更改权限,所以不要这样做:)

    要实际应用这些权限,您可以使用多种技术

    【讨论】:

    • 请注意,其他更具体的组在这里也可能有用; “用户”将包括所有登录的人(但不是匿名的),应该包括任何能够运行应用程序的人。
    • 太棒了。我要试试这个。我看到了对 Win7 的 icacls 的引用,并注意到 XP 的 cacls。我会测试看看我是否可以同时使用 cacls 。如果是这样,我应该很好并且会接受解决方案。
    • cacls 仍然存在,尽管它已被弃用,并且至少在 Windows 7 中仍应有效。 icacls 是 2003 年添加的,语法略有不同(但更完整)。你可以试试IF EXISTS %WINDIR%\System32\ICACLS.EXE (execute icacls) 类型的东西。
    • 我让 win7 使用:“icacls file.log /grant Users:RW”。接下来将在XP上工作。之后,我可以让安装程序区分操作系统。
    • 我的 XP 有问题。该框是域的一部分,因此我不确定这是否会导致问题。当前,当我运行命令时,我得到“无效的参数。显示或修改文件的访问控制列表 (ACL)”我已经检查了几次格式,一切看起来都很好。我读过,有时我必须先尝试使用“/e /r”来撤销权限,这似乎反应更快,但会产生“此工作站与主域之间的信任关系失败。”。我试图为之服务的组是“用户”,它是一个本地组......任何见解都值得赞赏。谢谢
    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多