Как я могу проверить, может ли текущий пользователь создавать / удалять виртуальные каталоги в IIS? - PullRequest
0 голосов
/ 02 августа 2011

Как определить, является ли текущий пользователь диспетчером IIS или администратором сервера?

У нас есть установщики, которые завершаются неудачно в конце процесса добавления / удаления, поскольку у пользователя недостаточно привилегий для создания или удаления виртуальных каталогов.

Перед тем, как приступить к операции «Установка / удаление», нужно ли в любом случае проверить, может ли 1006 * создавать или удалять виртуальные каталоги пользователя.

Существует ли каталог разрешений, который мы можем найти и проверить для текущего пользователя, или что-то подобное?

Спасибо
BW

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Я нашел это в 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;
0 голосов
/ 03 августа 2011

Если пользователь добавлен в группу '', он имеет доступ к созданию виртуального каталога в IIS

if (IISversion == 6)
     IIS_WPG - check for user in this group
else
     IIS_IUSRS - check for user in this group
0 голосов
/ 02 августа 2011

Вам нужно проверить ACL на папке, чтобы увидеть, есть ли у них разрешения или нет. Вы можете использовать что-то вроде этого, чтобы захватить путь:

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

Затем проверьте ACL.

Сделать залог при установке, если у них его нет.

...