管理员登录c语言程序,安装必须以管理员身份运行的程序

背景:

我决不是Windows安全/用户权限专家。我有一个应用程序(用C语言编写),它必须能够在根目录中写入/删除文件和文件夹,在磁盘的其他位置写入/删除文件,在系统注册表(本地计算机)中写入/修改值,并启动和停止其他应用程序。

服务。我认为我至少需要对其中一些操作拥有管理员特权。

我试过运行这个,在关闭了UAC的计算机上,它在没有任何附加设置的情况下工作得很好。但是,在打开UAC的计算机上(在Windows7中高于“从不通知”的任何级别),它将崩溃。我需要它在所有的电脑上工作。

到目前为止,我只需要手动选中“以管理员身份运行这个程序”复选框,一切都会很好。但是现在我们决定允许客户自己安装这个软件,它需要运行“开箱即用”。

我在Visual Studio 2008中有一个部署项目,它安装所有内容并在注册表中写入必要的启动数据。我现在需要做的是设置“以管理员身份运行此程序”标志。我想这并不像我希望的那么简单。

那么,正确的方法是什么呢?这个程序是在启动时启动的,如果UAC每次重新启动计算机时都会弹出(可能会使屏幕变暗),这会让我们的客户感到恼火。

谢谢你的帮助。

编辑:

谢谢你的回复。我意识到围绕UAC工作是不受欢迎的,我可以看到微软不支持“白名单”,所以它只请求一次许可。很好,我可以尊重这一点,不过我还有一些后续问题:

你能给我提供一个链接,告诉我如何正确地将程序提升到正确的提升状态吗?有没有关于选择等的文献?基本上我喜欢一个UAC 101指南。

当我需要额外的特权时,是否有方法提升安全状态(然后用UAC提示)。基本上,这个应用程序是在后台运行的,大部分时间都不做任何事情。它会不时地检查一些文件(此时我需要能够写入磁盘并读取注册表(此时只读很好),但是因为它是一个临时文件夹,所以无论我将它放在哪里都不重要。如果有一个位置,应用程序可以在没有任何特权的情况下进行写操作,那么这将是完美的。)

但是在某个时候,我需要执行所有剩余的任务(用户无论如何都需要确认这个操作),所以如果UAC在这一点上提示,那就没有问题了。是否有一种方法可以在此时提升它,然后将其返回到默认权限?

这样的解决方案是否适用于旧版本的Windows,包括Vista和XP(可能更旧?)要让它工作需要什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值