通过工作室,您可以这样做(引用):要在此 Visual C# Windows Forms 项目中配置特权提升级别,打开项目属性,转到“安全”选项卡,选中“启用安全设置”旁边的框单击Once 应用程序”,选择“此应用程序具有完全信任”,然后关闭“应用程序属性”页面。这将生成一个 app.manifest 文件并设置项目以嵌入清单。您可以通过展开“属性”文件夹在解决方案资源管理器中打开“app.manifest”文件。该文件默认包含以下内容。细绳
WindowsIdentity newId = new WindowsIdentity(_tokenHandle);
WindowsImpersonationContext ctx= newId.Impersonate();
....
ctx.Undo(); // отменить действие учётки
可能的选择
重启选项,检查
并通过运行重新启动程序
RT_MANIFEST 资源必须包含
通过工作室,您可以这样做(引用):要在此 Visual C# Windows Forms 项目中配置特权提升级别,打开项目属性,转到“安全”选项卡,选中“启用安全设置”旁边的框单击Once 应用程序”,选择“此应用程序具有完全信任”,然后关闭“应用程序属性”页面。这将生成一个 app.manifest 文件并设置项目以嵌入清单。您可以通过展开“属性”文件夹在解决方案资源管理器中打开“app.manifest”文件。该文件默认包含以下内容。细绳
替换
asInvoker
为requireAdministrator
(错误)如果有帐号(登录密码)或其令牌,则可以使用该帐号。
然后是选项。你可以得到一个类似 http://stackoverflow.com/a/35426713/5727271的令牌(这里缺少撤消)。
即使用户名和密码已知,管理员帐户也可能没有完全权限。可以通过 UAC(1 和 2)获得全部权利。
我认为如果该程序是一种奇怪的方式来乞求一个帐户 - 不是一种选择。如果该选项在某处加密以存储它,则该选项可能是合适的。
PS 我分析了 FAR 和 Total 是怎么做的——原理和 [1] 中的一样,但是稍微复杂一些。当发生安全错误时,将启动应用程序的第二个副本(通过权限提升,并出现一个对话框)。然后与程序的第二个副本建立连接,第二个副本执行附加操作,第一个用作“控制台”。
链接