Entwickler-Ecke
Basistechnologien - adminrechte verleihen
Kirschkern_1992 - Do 16.07.09 00:13
Titel: adminrechte verleihen
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 - 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
jaenicke - 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 - 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
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) { if (args.Length == 0 || args[0] != "/ADMINSTART") { string procName = Process.GetCurrentProcess().ProcessName;
string userName = "Admin_Acc";
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');
Process.Start(procName, "/ADMINSTART", userName, securePassword, null);
securePassword.Dispose();
return; }
Console.WriteLine("Anwendung wurde als [{0}] gestartet, bitte Taste druecken ...", Environment.UserName); Console.ReadKey(); } } } |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!