我试图从LAN运行可执行文件(.exe),而不允许用户访问LAN文件夹本身的内容。 例如
1)用户点击电子邮件中的链接到文件夹path的可执行文件,例如I:\ Folder A \ setup.exe
2)点击链接,安装程序运行
3)如果用户试图访问文件夹,即我:\文件夹A \,他们被禁止看到的文件夹的内容通过提示或没有显示任何东西。
有谁知道如何做到这一点。 本质上,我只是想确保用户只执行setup.exe的权限。 这是为NTFS权限。
如果你真的想要这样做,请执行以下操作(假定“Authenticated Users”应该有权执行SETUP.EXE):
validation该文件夹是否将“已authentication的用户”命名为具有任何权限。 如果是,请删除它们(通过删除直接在该文件夹中设置的权限,或通过中断inheritance层次结构,然后删除分配的权限)。
在SETUP.EXE文件本身上,设置“Authenticated Users – Read and Execute”权限。
如果用户知道文件的path,则用户将能够执行该文件,但他们将无法访问该文件夹。
我预测你的SETUP程序将需要访问该文件夹中的其他文件,并且不会工作,因为执行SETUP的用户将无法访问其他文件。 (为什么用户允许用户在他们的电脑上安装软件,无论如何,他们是否每天都用“pipe理员”帐户来使用他们的电脑……耻辱……)
我不认为这是可能的。 如果你必须进入文件夹,那么执行权限就足够了。 但要读取文件读取权限是必需的。 为了运行setup.exe,该用户必须能够读取需要读取文件夹权限的setup.exe(可执行代码)。
另一种可能性是从隐藏份额(如行政份额)中提供。 这些由共享名称后面的$符号表示,默认情况下不会显示在LAN上。 换句话说,你必须知道它在那里才能使用它。 由于默默无闻的安全感,但它可能为您的目的。
您需要进入setup.exe的高级权限。 删除用户/组的所有权限(必要时删除inheritance的权限),然后进入高级权限,并添加权限为“Travers文件夹/执行文件”的用户/组。
这允许用户执行setup.exe,但是他们不能在例如hex编辑器中打开它并查看它的内容。
JR
我又看了一下这个埃文的伙伴。 事实certificate,我是正确的(当然:-)但埃文也是正确的; 有点。
这里是细节。 我创build了一个文件夹C:\ test,并将ACL保留为默认值。 该文件夹上的ACL似乎并不重要。 在这个文件夹中,我复制了一些Windows小程序,如Paint和Notepad。 我还复制了一个我自己写的超级简单的Windows应用程序。 ultraimple应用程序的来源是:
#include <windows.h> int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello world\n", "Hello world\n", 0); return 0; }
我相信你会同意很简单。 现在我编辑了所有文件的权限。 我禁用inheritance,删除所有权限,并设置ACL只包含一个授予Everyone权限“遍历文件夹/执行文件”的条目。
现在,如果我拖动任何文件到记事本,我立即得到一个访问被拒绝的错误。 如果我尝试将任何文件复制到另一个文件夹中,则会出现拒绝访问错误。 这表明读取文件的权限已被拒绝。
现在我双击我的简单的应用程序,它启动。 只是为了完整性,我复制了另一个更大的应用程序,我正在工作,并设置权限之后,这工作。 这是我第一次发布的时候的观点,这就是为什么我相信我的回答是正确的。
但是,当我尝试运行mspaint.exe或notepad.exe他们不运行。 相反,我得到一个访问被拒绝的错误。 这是我勉强承认埃文可能有点的地步:-)
我对此的解释是记事本和MSPaint都具有Windows启动时尝试加载的资源。 这要求读取文件,以便读取资源,并且由于读取访问被拒绝,尝试启动文件失败。 因为我的应用程序没有资源,Windowspipe理很愉快地启动它。 我想这应该适用于任何除了最简单的Windows应用程序,所以虽然我原来的post在技术上是正确的,但实际上只是设置执行权限不会让你运行任何有用的东西。 您还需要读取权限。
也许我疯了,但不能只是从他们的账户中删除该文件夹的“列表文件夹内容”?