Мне нужно запустить команды с повышенными привилегиями на моем бэкэндC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Мне нужно запустить команды с повышенными привилегиями на моем бэкэнд

Сообщение Anonymous »

Для среды, которую я разрабатываю (Elecron + BS5.3 + node.js + Go + Cobra ...), целью которого является создание веб -интерфейса, чтобы пользователи могли выполнять системные команды, используя кнопки и формы на : Windows, Linux или Mac для управления контейнерными средами Dockers. em>
Единственное, что я обнаружил, это изменения в пакете.

Код: Выделить всё

"scripts": {
"start": "electron src/main.js --trace-warnings --win32metadata.requested-execution-level=requireAdministrator",
"build": "electron-builder"
},
...
"win": {
"target": [
"nsis"
],
"artifactName": "webstack-deployer-for-docker-${version}.exe",
"icon": "src/assets/icons/icon.ico",
"requestedExecutionLevel": "requireAdministrator",
"adminRequested": true
},
Я нашел этот ответ, который позволяет мне только оценить, как он работает, но это не заставляет и не открывать/переосмыслить приложение с повышенными привилегиями на node.js и вызове Бэкэнд с теми же повышенными привилегиями.
в c# у меня есть и класс с этим кодом, но я не знаю, как портировать на node.js/project:

Код: Выделить всё

internal static void CheckElevated()
{
if (!IsRunAsAdmin())
{
RunApp();
}
}

public static void RunApp()
{
Assembly? assemblyEntries = Assembly.GetEntryAssembly();

if (assemblyEntries != null)
{

string executablePath = assemblyEntries.Location.Replace(".dll", ".exe");

if (!File.Exists(executablePath) && Environment.ProcessPath != null)
{
executablePath = Environment.ProcessPath;
}

if (File.Exists(executablePath))
{
ProcessStartInfo processInfo = new()
{
UseShellExecute = true,
WorkingDirectory = Environment.CurrentDirectory,
FileName = executablePath,
Verb = "runas"
};

try
{
Process.Start(processInfo);
Environment.Exit(0);
}
catch (Exception ex)
{
MessageBox.Show("Error: This program must be run as an administrator! \n\n" + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Error: This program must be run as an administrator!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}

public static bool IsRunAsAdmin()
{
try
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (Exception)
{
return false;
}
}
В версии приложения C# это нужно было сделать только один раз, но в этой разработке, имея два слоя: (спереди и сзади), я предполагаю, что это следует оценить в обеих областях ...

Подробнее здесь: https://stackoverflow.com/questions/794 ... my-backend
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»