Выполненная часть c# программы с административными привилегиями

Существует ли способ запросить поднятые полномочия от OS, для "просто части" c# программы?

Я пишу набор integrationtests, использующего NUnit. Одна из вещей, которые я тестирую, - то, если приложение под тестом правильно соединяется с портом 843. Тест открывает сокет слушания в порте 843, и затем бросает все виды ответов на приложение под тестом и проверяет, ведет ли приложение себя правильно.

Открытие сокета слушания на порте 843 требует административных привилегий как бы то ни было.

Я хотел бы найти наименее навязчивый способ смочь запустить этот тест. Я мог выполнить весь комплект NUnit как корень/администратора, но это сделает много материала выполненным как корень, который действительно не должен быть, работал как корень, который я хотел бы предотвратить.

6
задан Lucas Meijer 16 February 2010 в 09:10
поделиться

4 ответа

Вот как это можно сделать с ObjectQuery

MytableSet.Where("it.Name between @start and @end", new ObjectParameter("start", "john"), new ObjectParameter("end", "Pear"))

EDIT:

Забудьте упомянуть, что эта инструкция специфична для Сущности Рамки не LINQ2SQL.

-121--3366980-

Установщики MSI идеально подходят для корпоративных установок, и хорошим способом создания MSI является использование WIX, системы на основе XML. Однако необходимые вам файлы сложны, поэтому я использую MSI Factory для создания установщика, который обрабатывает все обычные требования, но который затем выводит файлы WiX, которые могут быть построены и обновлены моим средством создания сценариев FinalBuilder . Таким образом, я получаю преимущества хорошего пользовательского интерфейса и инструмента открытых файлов, так что никакой блокировки.

-121--3774713-

Нет. Отметка - это все или ничего. Как правило, если требуется повышение уровня, приложение загружается в состояние повышенного уровня.

1
ответ дан 17 December 2019 в 20:31
поделиться

Да, вы можете взглянуть на функцию LogonUser . Вот пример .

0
ответ дан 17 December 2019 в 20:31
поделиться

Для того, чтобы иметь повышенные права, процесс должен быть запущен с повышенными привилегиями. Вы не можете изменить свой повышенный статус «в процессе».

Чтобы обойти эту проблему, используйте диспетчер задач. Если вы запустите этот «без повышенных прав» и нажмете «Показать процессы для всех пользователей», он в основном убьет старый процесс диспетчера задач и запустит новый с повышенными привилегиями для выполнения этой работы.

0
ответ дан 17 December 2019 в 20:31
поделиться

Если требуется, приведенный ниже код поможет вам узнать, является ли текущий вошедший пользователь администратором или нет:

using System;
using System.Security.Principal; 

class Test
{
    public static void Main()
    {
        if (new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator))
        {
            Console.WriteLine("I am an admin.");
        }
    }
}
1
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: