C #: обнаружение, если вы работаете как суперпользователь, как в Windows, так и в Mono - PullRequest
3 голосов
/ 03 ноября 2010

этот вопрос на самом деле является дубликатом этого . Я хочу определить, выполняется ли моя программа с повышением привилегий в Winows через UAC или как root в Unix / Mono.

Как я могу это сделать в C #?

1 Ответ

2 голосов
/ 03 ноября 2010

Нечто подобное функции, приведенной ниже, позаботится о конце вопроса Unix / Mono.Кстати, я на самом деле не компилировал и не запускал это, но вы поняли идею.

private bool AmIRoot()
{
   //Declarations:
   string fileName = "blah.txt",
          content = "";

   //Execute shell command:
   System.Diagnostics.Process proc = new System.Diagnostics.Process();
   proc.EnableRaisingEvents=false; 
   proc.StartInfo.FileName = "whoami > " + fileName;
   proc.StartInfo.Arguments = "";
   proc.Start();
   proc.WaitForExit();

   //View results of command execution:
   StreamReader sr = new StreamReader(fileName);
   content = sr.ReadLine();
   sr.Close();

   //Clean up magic file:
   File.Delete(fileName);

   //Return to caller:
   if(content == "root")
      return true;
   else
      return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...