代码之家  ›  专栏  ›  技术社区  ›  usr-local-ΕΨΗΕΛΩΝ

C:在Windows和Mono中检测是否以超级用户身份运行

  •  3
  • usr-local-ΕΨΗΕΛΩΝ  · 技术社区  · 14 年前

    这个问题实际上是 this one . 我想检测我的程序是否正在通过UAC在WinOWS中以特权提升的方式运行,或者作为 在Unix/Mono中。

    我怎么能用C来做?

    1 回复  |  直到 14 年前
        1
  •  2
  •   kmarks2    14 年前

    下面的函数将处理这个问题的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;
    }