代码之家  ›  专栏  ›  技术社区  ›  ciio

如何提升一个进程,让我可以输入管理员密码,这样UAC就不必要求它了

  •  1
  • ciio  · 技术社区  · 12 年前

    我有一个普通用户会运行的exe,但它需要合并 注册 文件,这需要UAC弹出窗口询问管理员密码,我不想提供给用户。

    有没有办法让我把密码传进去 process.StartInfo 这样UAC就不必要求密码了?

    如果我这样做:

    process.StartInfo.Domain    = "XYZ";
    process.StartInfo.UserName  = "admin";
    process.StartInfo.Password  = "";
    

    它告诉我我需要被解雇。

    我还试图模拟管理员帐户,然后:

    process.StartInfo.Verb      = "runas";
    process.start() 
    

    但它将崩溃:

    未处理的异常:System.ComponentModel.Win32异常:未知错误(0xfffffffe)

    1 回复  |  直到 12 年前
        1
  •  1
  •   Alexey Ivanov    12 年前

    不,你不能那样做。如果你能轻易绕过UAC,那就没有意义了。

    问题是,即使您知道密码,安全令牌也是使用丢弃的权限创建的。当你登录到Windows时会发生这种情况:你提供了用户名和密码,但你不能立即获得所有管理员权限,你必须通过UAC确认进行提升。