Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Permissions 如何使用wix安装程序拒绝用户的文件夹权限_Permissions_Wix_Windows Installer_Installation - Fatal编程技术网

Permissions 如何使用wix安装程序拒绝用户的文件夹权限

Permissions 如何使用wix安装程序拒绝用户的文件夹权限,permissions,wix,windows-installer,installation,Permissions,Wix,Windows Installer,Installation,我的目标是将我的应用程序安装到一个文件夹: 系统可读写 管理员可读写 没有其他任何人的其他权限 我尝试了wixPermission和PermissionEx元素的各种组合和安排 我最近的尝试是: <CreateFolder> <util:PermissionEx User="Users" GenericRead="no" Read="no"/> <util:PermissionEx User="Everyone" GenericRead="no" Rea

我的目标是将我的应用程序安装到一个文件夹:

  • 系统可读写
  • 管理员可读写
  • 没有其他任何人的其他权限
我尝试了wix
Permission
PermissionEx
元素的各种组合和安排

我最近的尝试是:

<CreateFolder>
  <util:PermissionEx User="Users" GenericRead="no" Read="no"/>
  <util:PermissionEx User="Everyone" GenericRead="no" Read="no"/>
  <util:PermissionEx User="Administrators" GenericAll="yes"/>
</CreateFolder>

组件
元素内部

我的结果始终相同:用户仍然显示对已安装文件夹的读取、读取和执行权限,以及列表文件夹内容

我的目标与我的非常相似


我也考虑过和。

我只是想知道你的总体目标是什么(有几个选项可以应用):

  • 目标是防止普通用户运行应用程序吗?(不太好,但应该可以运行。普通用户在应用程序启动时会被要求输入管理员密码。如果他们没有,就我所知,他们无法运行应用程序,除非他们提升的管理员帐户没有密码!)
  • 目标是防止普通用户能够列出实际文件夹的内容吗?替换ACL(禁用继承的权限)并仅为您希望能够访问文件夹的用户/用户/组添加访问权限应该可以做到这一点。不需要为普通用户拒绝权限或特定权限。换言之,只需替换现有的ACL,并为管理员添加通用写入权限和系统的完全权限
我相信您非常清楚,修改ACL会产生许多副作用,尤其是拒绝权限(自我修复期间会发生什么?)。我现在没有时间测试特定的ACL,但如果您仍然需要,我明天会再次检查。我认为“需要管理员权限”选项可能适合您


快速模型 只想添加一个测试权限,我发现。只需在Windows资源管理器中根据需要修改ACL权限。然后启动提升的命令提示符并导航到要捕获其ACL的文件夹。然后去:

cacls.exe foldername /s
这应该表明您可以直接在WiX中转储,以在MSI文件()中使用新的内置
LockPermissionEx
表:

该文件夹现在像一些核心操作系统文件夹一样超级隐藏。这样的文件夹不会显示在Windows资源管理器或命令行中,除非您采取特殊步骤使其显示(显示隐藏的OS文件-请参阅上面的链接)。但是,如果用户知道文件夹在那里,则不会锁定该文件夹以供访问。也许你可以将超级隐藏标志与另一种方法结合起来?(隐藏文件夹并将其锁定?)

  • 基于访问的枚举服务器共享:这个新的服务器功能似乎正是您实际需要的。它隐藏了用户没有访问权限的文件夹,但我认为该功能不能在普通PC(非服务器)上使用。也许可以?有什么要稍后检查的。我不知道在服务器共享上存储文件是否是一种选择

    • “奇怪的黑客”:
  • 数据库连接:出于某种原因,这肯定是不可能的,但房间里的大象是为什么这种数据访问(如果涉及数据访问)不是通过数据库和经过身份验证的连接完成的
  • Web应用程序:与4一样,显然存在一个很好的理由阻止您将其作为Web应用程序?或者我猜它可能是我们所知道的一个web应用程序。记下我想到的任何东西,记住我
  • 通过登录脚本映射驱动器/组策略:我想您可以通过登录脚本(或更好的)使用映射驱动器,该脚本只映射给应该有权访问应用程序的用户?我认为,简单的应用程序可以直接从这样一个映射驱动器上运行。也不需要安装。或者在映射的驱动器中保留一个二进制文件,其余的文件在本地保存
  • NTFS符号链接:试图记下我所说的一切。我从未使用过此功能,但我知道a可能指向服务器共享。如果该服务器支持基于访问的枚举怎么办?这会隐藏某些用户的文件和文件夹吗?列出你没有尝试过的选项是不明智的,但也许其他人会更好地阅读它
  • 自定义NT访问组:我想知道最简单的“修复”方法是创建一个本地或广告访问组,您需要成为其中的一员才能访问您的文件夹。因此,您可以删除所有内置组,添加系统和具有完全访问权限的自定义组,以及技术上需要的任何其他组(创建者?)我还没有测试过这个(也许这是你尝试的第一件事?)。将这样一个本地组与一个超级隐藏文件夹相结合听起来像是一种选择。普通用户不会轻易看到该文件夹,如果他们看到了,就无法访问它?仍然存在启动快捷方式可见性的问题?(如果用户无法启动应用程序,为什么要看到它)
  • 如果您可以找到(或创建)具有所需权限的文件夹,我将首先使用CACLS.exe以SDDL格式显示权限。一旦你有了这个,你可以在你的MSI中使用MsiLockPermissionsEx表


    WiX似乎不直接支持MsiLockPermissionsEx表,因为似乎没有一种方法可以直接粘贴SDDL字符串以应用于某些内容,除非我在某些地方遗漏了它

    谢谢你,斯坦。我的目标是你的第二项。我不希望普通用户阅读此文件夹的内容。您是否有“仅替换现有ACL并为管理员添加通用写入和系统的完全权限”的wix代码示例?谢谢,我已经做了一些测试,因为我担心结果不准确
    <Component Feature="ProductFeature">
       <File Source="Files\Test.exe" />
       <CreateFolder>
         <PermissionEx Id="p1" Sddl="D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a8;;;BU)" />
       </CreateFolder>
    </Component>
    
    attrib +s +h "C:\Folder\"