Autor Beitrag
Kirschkern_1992
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 16.07.09 00:13 
hi

also ich möchte eine datei nach c:\... kopieren
aber dazu brauche ich adminrechte

ist es möglich, dass ich diese VOR dem kopiervorgang verleihe, und nachher wieder entziehe


ich möchte das programm nicht immer per hand als admin straten...

lg
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: Do 16.07.09 01:03 
Hallo,

keine Ahnung ob es möglich ist. Aber sollte es möglich sein wäre dies wohl ein riesen Sicherheitsloch. Stell dir dann Software vor die sich selbst die Admin-Rechte gibt und ganz böswillige Aktionen ausführt und danach wieder ganz scheinheilig in den "normalen" Benutzerkontext wechselt.

Daher glaube ich dass das nicht möglich sein sollte.


mfG Günther

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 16.07.09 06:06 
Nein, das ist so nicht möglich. Dazu musst du einen zweiten Prozess (oder einen Out-of-process COM-Server in einer DLL) mit Adminrechten starten. Dieser führt das dann durch, gibt dir Bescheid und beendet sich. Und du kannst dann anzeigen, dass es geklappt hat oder so.

Hintergrund: Ein laufender Prozess kann nur beim Start Adminrechte bekommen oder nicht. Danach kann man diese nicht mehr setzen oder entziehen. Gar nicht.
sk197666
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 04.10.09 03:28 
Hallo Leute,

der Beitrag ist zwar schon etwas älter, aber man kann dieses Problem ohne großen Aufwand über einen kleinen Trick lösen - sofern sichergestellt ist, dass sich weder Benutzername noch Kennwort ändern.

Gruß Sk

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
using System;
using System.Security;
using System.Diagnostics;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Prüfen ob Argumente übergeben wurden, bzw. ob es sich um einen
            // "administrativen Start" handelt
            if (args.Length == 0 || args[0] != "/ADMINSTART")
            {
                // Prozessname ermittteln
                string procName = Process.GetCurrentProcess().ProcessName;

                // Benutzername festlegen
                string userName = "Admin_Acc";

                // Passwort festlegen
                SecureString securePassword = new SecureString();

                securePassword.AppendChar('P');
                securePassword.AppendChar('a');
                securePassword.AppendChar('s');
                securePassword.AppendChar('s');
                securePassword.AppendChar('w');
                securePassword.AppendChar('o');
                securePassword.AppendChar('r');
                securePassword.AppendChar('d');

                // Prozess mit Admin-Account starten
                Process.Start(procName, "/ADMINSTART", userName, securePassword, null);

                // Passwortresource freigeben
                securePassword.Dispose();

                // Programm verlassen
                return;
            }

            Console.WriteLine("Anwendung wurde als [{0}] gestartet, bitte Taste druecken ...", Environment.UserName);
            Console.ReadKey();
        }
    }
}


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt