Ich muss Befehle mit erhöhten Privilegien auf meinem Backend ausführenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ich muss Befehle mit erhöhten Privilegien auf meinem Backend ausführen

Post by Anonymous »

Für eine Umgebung, die ich entwickle (Elecron + BS5.3 + node.js + go + cobra ...), dessen Ziel es ist, eine Weboberfläche zu erstellen, damit Benutzer Systembefehle mithilfe von Schaltflächen und Formularen auf ausführen können : Windows, Linux oder Mac, um Dockers -Containerumgebungen zu verwalten. EM>
Das einzige, was ich gefunden habe

Code: Select all

"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
},
Ich habe diese Antwort gefunden, mit der ich nur bewerten kann, wie sie läuft, dies jedoch nicht die Anwendung mit erhöhten Berechtigungen auf node.js erzwingt oder wieder aufgerufen wird und aufgerufen wird Das Backend mit den gleichen erhöhten Berechtigungen. p>

Code: Select all

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;
}
}
In der C# -Version der Anwendung musste dies nur einmal durchgeführt werden, aber in dieser Entwicklung mit zwei Ebenen: (vorne und hinten) nehme ich an, dass es es sollte in beiden Bereichen bewertet werden ... < /p>

Ich werde bald Updates zu jedem Fortschritt hinzufügen. Ich denke an den node.js is-elevated Implementierung.
Ziel ist es Nun, damit der Benutzer Verzeichnisse und Dateien programmgesteuert erstellen kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post