对不起先为长的问题。什么我是真的感兴趣的是一种编程方式检查,如果执行窗户身份标识具有充分的windows的特权编写目录(或文件)中的一个ASP.NET 网服务应用程序。但我会解决的用于检索有效的删除(修改)特权用户对于给定目录或文件。问题是,我希望能够这样做没有任编写的临时文件,或一定是执行IO行动,并处理的例外。

是的,有一个问题,在这个已经(见 我怎么可以编程方式确定如果我有写特权的使用C#。净?) 通常我会同意接受答案的最好方法是只是尝试IO行动,并处理任何异常的--系统。IO方法并投掷系统。UnauthorizedAccessException指示的失败结果的特权,拒绝。但在的情况下上载的文件,我真的很喜欢检查的特权之前浪费的时间和资源上载数据,因为它是只有在上传,我们就可以尝试写文件或文件夹中的问题。我可怜的任何用户传2GB文件通过http只被告知上传完成后,他们没有权限将文件上传到目的地。

通常的方法来测试写访问的如果你不想进行实际的编写是编写一个临时文件。其他问题都有答案指出了这一点。这是什么我们的代码目前做。但是windows安全允许写入而不删除的权限。用户只用写的访问,但没有删除最终使各种各样的恢复.tmp文件。不,我们不想使用的一个领域的管理帐户的重置上ACL tmp文件,然后将它们删除。这办法我一直在考虑是检查如果用户已写入特权使用系统。IO.目录。GetAccessControl(..)或系统。IO.文件。GetAccessControl(..)和处理的各种访问的规则和ACE返回...但是有了这个,我还是有问题处理与有效的权限--即在大多数情况下,我还有看起来的用户是会员国在任何集团中列出的王牌,这样做具有权限的对象。必须有一个更简单的方式。没有?

有帮助吗?

解决方案

好赞誉为正在进行的用户体验加倍努力,并试图保持清洁的程序结构。也许,如果你只上传你可以尝试创建一个具有相同的名称作为最终2GB的文件将有一个空“占位”文件,那么就覆盖它。不完美,因为你仍然可以结束了一个空文件,但很容易和至少多一点点优雅,一些替代品。

其他提示

您还可以有永久的文件,说“access_test.txt”,你尝试用邮戳或东西覆盖,以先行先试的当前访问。

@保罗,我很喜欢你的答案,我觉得在那里有一个已知的和相对较小的潜力上传目标目录,你必须妥善解决正常的Web应用程序: 1 - 如果应用程序可能没有追加数据privieleges用户,所有上传的目录应该有附加的操作对检查上传之前测试已知的测试文件点击。 2 - 如果没有关于追加数据权限的烦恼,那么应用程序可以只写出来的文件的空版本,并追加到它上传。我接受你的答案,以确保您获得信贷这一点。

不幸的是,在我的应用程序,我们没有一个有限的或已知的集上传的目标目录中 - 任何股份或文件夹的网络中可访问。我们将实现在相对小块上传数据的缓冲和打开追加模式下的目标文件,而是保持一个FileStream打开上传的时间(是有处理文件流在这篇长寿命问题)这给出了一个快速的异常,如果没有写权限W(只要第一个块被写入到FileStream发生)/ O依赖于附加数据的权限。但我不建议这样的设计给任何人 - 如果你能摆脱它尝试的@保罗的建议的解决方案之一。如果你也不必担心缺乏对上传的写权限早消息,只是处理异常,不要担心。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top