如何检查当前用户是否可以在IIS中创建/删除虚拟目录?

时间:2011-08-02 10:52:10

标签: .net iis windows-installer virtual-directory

如何判断当前用户是IIS管理器还是Server Administrator?

我们的安装程序在添加/删除结束时失败,因为用户没有足够的prividgles来创建或删除虚拟目录。

在进入安装/卸载操作的肉和土豆之前,无论如何都要检查可以用户创建或删除虚拟目录。

是否有权限目录我们可以查找并检查当前用户或类似内容?

感谢
BW

3 个答案:

答案 0 :(得分:1)

我在Code Project找到了这个,它就是我需要的。

它的关键是System.IO.FileInfo.GetAccessControl().GetAccessRules方法来获取文件夹的ACL。

摘录

System.IO.FileInfo fi = new System.IO.FileInfo(_path);
AuthorizationRuleCollection acl = fi.GetAccessControl().GetAccessRules(true, true, typeof(SecurityIdentifier));
for (int i = 0; i < acl.Count; i++) {
    System.Security.AccessControl.FileSystemAccessRule rule = (System.Security.AccessControl.FileSystemAccessRule)acl[i];
    if (_principal.User.Equals(rule.IdentityReference)) {
        if (System.Security.AccessControl.AccessControlType.Deny.Equals.                                (rule.AccessControlType)) {
            if (contains(FileSystemRights.AppendData,rule)) 
                _denyAppendData = true;

答案 1 :(得分:0)

您需要检查文件夹上的ACL以查看它们是否具有权限。您基本上可以使用类似的东西来抓住路径:

http://forums.asp.net/p/1436196/3254626.aspx/1?Re+Retrieve+physical+path+of+an+IIS+Application+Virtual+Directory+

然后检查ACL。

如果他们没有安装保释金。

答案 2 :(得分:0)

如果用户被添加到''组,他有权在IIS中创建虚拟目录

if (IISversion == 6)
     IIS_WPG - check for user in this group
else
     IIS_IUSRS - check for user in this group