.net 作为管理员进行身份验证?

.net 作为管理员进行身份验证?,.net,vb.net,uac,windows-authentication,.net,Vb.net,Uac,Windows Authentication,我正在开发一个安装程序,我想写一个只有管理员才能访问的文件夹。因此,我需要显示UAC对话框并作为管理员进行身份验证。我知道我可以通过从安装程序GUI运行一个单独的可执行文件来实现这一点,但我更希望有一个解决方案,允许我在应用程序中随时进行身份验证。在.NET中是否可以这样做?您不能在进程中间更改权限级别,一旦进程启动,它就会被卡在该权限级别上。您必须以提升的权限启动单独的进程,并与IPC通信以更新GUI 如果您正在编写安装程序,最好是将安装程序自己的应用程序清单标记为管理权限本身,这样它将在启动

我正在开发一个安装程序,我想写一个只有管理员才能访问的文件夹。因此,我需要显示UAC对话框并作为管理员进行身份验证。我知道我可以通过从安装程序GUI运行一个单独的可执行文件来实现这一点,但我更希望有一个解决方案,允许我在应用程序中随时进行身份验证。在.NET中是否可以这样做?

您不能在进程中间更改权限级别,一旦进程启动,它就会被卡在该权限级别上。您必须以提升的权限启动单独的进程,并与IPC通信以更新GUI


如果您正在编写安装程序,最好是将安装程序自己的应用程序清单标记为管理权限本身,这样它将在启动时请求管理权限,因为您每次都需要它。

您不能在进程中间更改权限级别,一旦进程启动,它将停留在该权限级别。您必须以提升的权限启动单独的进程,并与IPC通信以更新GUI


如果您正在编写安装程序,最好只将安装程序自己的应用程序清单标记为管理权限本身,以便它在启动时请求管理权限,因为您每次都需要它。

您必须使用此配置为
清单
文件运行一个新进程:

<security>
  <requestedPrivileges>
    <requestedExecutionLevel level="requireAdministrator" />
  </requestedPrivileges>
</security>

必须使用此配置为
清单
文件运行新进程:

<security>
  <requestedPrivileges>
    <requestedExecutionLevel level="requireAdministrator" />
  </requestedPrivileges>
</security>

作为启动提升的新进程的替代方法,您可以创建提升的新COM对象


有些安装程序使用的方法与您尝试的方法类似。这方面的一个例子是。在第一个屏幕上,它询问将在哪里进行标准(所有用户)或便携式设置。如果选择了“标准”,则会提示输入高程并重新启动自身


因此,最简单的方法是从用户处收集数据,然后以管理员身份重新启动自身或另一个可执行文件,以执行实际工作,通过用户的选择传递参数。

作为启动提升的新进程的替代方法,您可以创建提升的新COM对象


有些安装程序使用的方法与您尝试的方法类似。这方面的一个例子是。在第一个屏幕上,它询问将在哪里进行标准(所有用户)或便携式设置。如果选择了“标准”,则会提示输入高程并重新启动自身


因此,最简单的方法是从用户处收集数据,然后以管理员身份重新启动自身或另一个可执行文件,以完成实际的工作,通过用户的选择传递参数。

我不想这样做的原因(例如,立即请求管理员权限)是因为我希望能够安装到本地/appdata文件夹。然后,您将需要生成第二个没有GUI的进程,并使用某种形式的(可能使用管道,但您必须使用权限,因为当您拥有高权限进程与低权限进程对话时,默认权限将不起作用)告诉它该怎么做。我不想这么做的原因(例如,立即请求管理员权限)是因为我希望能够安装到本地/appdata文件夹。然后,您需要生成第二个没有GUI的进程,并使用某种形式的(可能使用管道,但您必须使用权限,因为当您有一个高优先级进程与一个低优先级进程对话时,默认的权限将不起作用)告诉它该怎么做。