首页 / C# / c#-必须以管理员身份运行的安装程序
c#-必须以管理员身份运行的安装程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-必须以管理员身份运行的安装程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2185字,纯文字阅读大概需要4分钟。
内容图文
![c#-必须以管理员身份运行的安装程序](/upload/InfoBanner/zyjiaocheng/651/1413805043f540ef9a281e031b455f64.jpg)
背景:我绝不是Windows安全/用户权限专家.我有一个应用程序(用C#编写),该应用程序必须能够写入/删除文件&根目录中的文件夹,在磁盘上的其他位置写入/删除文件,在系统注册表(本地计算机)中写入/修改值,然后启动&停止其他应用程序和服务.我认为至少其中一些操作需要管理员特权.
我尝试运行此程序,并且在关闭了UAC的计算机上,无需任何其他设置,它的效果很好.但是,在启用了UAC(在Windows 7中高于“从不通知”的任何级别)的计算机上,它将崩溃.我需要它才能在所有计算机上工作.
到目前为止,我只需要手动选中“以管理员身份运行该程序”复选框即可,一切都会好起来.但是,现在我们决定允许客户自行安装此软件,并且需要“开箱即用”运行.
我在Visual Studio 2008中有一个部署项目,该项目将安装所有内容并在注册表中写入必要的启动数据.我现在需要做的是设置“以管理员身份运行该程序”标志.我猜这不是我想要的那么简单.
那么,这样做的正确方法是什么?该程序是在启动时启动的,如果UAC每次重新启动计算机时都弹出(并且可能使屏幕变暗),这会对我们的客户感到不快.
谢谢您的帮助.
编辑:谢谢您的答复.我意识到围绕UAC的工作将不被重视,并且我可以看到Microsoft不支持“白名单”,因此它只会请求一次许可.我可以尊重这一点,但是我确实有一些后续问题:
>您能否为我提供一个链接,该链接将向我展示如何正确地将程序提升到正确的提升状态?有关于什么选择的文献,等等.基本上,我会喜欢UAC 101指南.
>当我需要额外的特权时(只有然后通过UAC提示),是否可以提高安全状态.基本上,此应用程序在后台运行,大部分时间几乎不执行任何操作.它会不时地检查一些文件(这时我将要求能够写入磁盘并读取注册表(这时只读是可以的),但是由于它是一个临时文件夹,所以无论我在哪里如果存在,应用程序可以在没有任何特权的情况下进行写操作.)
但是在某个时候,我将需要执行所有其余任务(无论如何,用户都需要确认此操作),因此,如果UAC在这一点上提示,那将没有问题.有没有办法在此时提升它,然后将其返回到默认权限?
>这样的解决方案是否可以与Windows的较旧版本一起使用,包括Vista和Xp(也许还有较旧的版本?)才能使它起作用?
解决方法:
正确的方法是使用UAC提示(您可以通过程序的清单设置)来提高程序启动的时间-试图变得聪明并绕过它就皱眉了.
考虑一下-如果您可以安装在没有UAC提示的情况下会自动提升的东西… UAC的意义是什么?
要将UAC清单添加到程序,只需将清单添加到项目中并进行编辑. UAC的示例清单是here.如果要在最后一个可能的时刻提升,则需要生成一个单独的进程-您不能提升现有的进程.因此,将其分开,然后使用
Process.StartInfo.UseShellExecute = true;
Process.StartInfo.Verb = "runas";
内容总结
以上是互联网集市为您收集整理的c#-必须以管理员身份运行的安装程序全部内容,希望文章能够帮你解决c#-必须以管理员身份运行的安装程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。