RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1010719
Accepted
nick_n_a
nick_n_a
Asked:2020-08-06 19:26:07 +0000 UTC2020-08-06 19:26:07 +0000 UTC 2020-08-06 19:26:07 +0000 UTC

如何请求提权?

  • 772

如何请求用户提升。例如,如果这是一个服务安装程序,则安装功能会出错 - 权限不足。许多安装程序将此作为常规启动对话框。那些。全屏窗口有两个字段:登录名和密码。我认为作为用户工作的每个人都知道这个窗口。如果工作从管理员(不是根)下进行,则窗口中有两个按钮 - 是和否。如何在 C# 中做到这一点?

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    nick_n_a
    2020-08-07T17:55:39Z2020-08-07T17:55:39Z

    可能的选择

    1. 重启选项,检查

       static internal bool IsRunAsAdmin()
           {
               WindowsIdentity id = WindowsIdentity.GetCurrent();
               WindowsPrincipal principal = new WindowsPrincipal(id);
               return principal.IsInRole(WindowsBuiltInRole.Administrator);
           }
      

    并通过运行重新启动程序

     ProcessStartInfo proc = new ProcessStartInfo(); 
        proc.UseShellExecute = true; 
        proc.WorkingDirectory = Environment.CurrentDirectory; 
        proc.FileName = Application.ExecutablePath; 
        proc.Verb = "runas"; 
        try 
        { 
            Process.Start(proc); 
            Application.Exit(); // Завершить текущую.
        } 
        catch 
        { 
    
        } 
    
    1. 带有资源的选项(将始终请求)

    RT_MANIFEST 资源必须包含

    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
       <security> 
          <requestedPrivileges> 
             <requestedExecutionLevel 
                level="requireAdministrator" 
             /> 
          </requestedPrivileges> 
       </security> 
    </trustInfo> 
    

    通过工作室,您可以这样做(引用):要在此 Visual C# Windows Forms 项目中配置特权提升级别,打开项目属性,转到“安全”选项卡,选中“启用安全设置”旁边的框单击Once 应用程序”,选择“此应用程序具有完全信任”,然后关闭“应用程序属性”页面。这将生成一个 app.manifest 文件并设置项目以嵌入清单。您可以通过展开“属性”文件夹在解决方案资源管理器中打开“app.manifest”文件。该文件默认包含以下内容。细绳

    <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
    

    替换asInvoker为requireAdministrator

    1. (错误)如果有帐号(登录密码)或其令牌,则可以使用该帐号。

       WindowsIdentity newId = new WindowsIdentity(_tokenHandle);
       WindowsImpersonationContext ctx= newId.Impersonate();
       ....
       ctx.Undo(); // отменить действие учётки 
      

    然后是选项。你可以得到一个类似 http://stackoverflow.com/a/35426713/5727271的令牌(这里缺少撤消)。

    即使用户名和密码已知,管理员帐户也可能没有完全权限。可以通过 UAC(1 和 2)获得全部权利。

    我认为如果该程序是一种奇怪的方式来乞求一个帐户 - 不是一种选择。如果该选项在某处加密以存储它,则该选项可能是合适的。


    PS 我分析了 FAR 和 Total 是怎么做的——原理和 [1] 中的一样,但是稍微复杂一些。当发生安全错误时,将启动应用程序的第二个副本(通过权限提升,并出现一个对话框)。然后与程序的第二个副本建立连接,第二个副本执行附加操作,第一个用作“控制台”。

    链接

    • http://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3
    • http://docs.microsoft.com/en-us/dotnet/standard/security/impersonating-and-reverting
    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5