gpt4 book ai didi

c# - 安装必须以管理员身份运行的程序

转载 作者:行者123 更新时间:2023-11-30 16:34:55 26 4
gpt4 key购买 nike

背景:我绝不是 Windows 安全/用户权限专家。我有一个应用程序(用 C# 编写),它必须能够写入/删除其根目录中的文件和文件夹,写入/删除磁盘上其他位置的文件,写入/修改系统注册表(本地计算机)中的值并启动 &停止其他应用程序服务。我认为我至少需要管理员权限才能执行其中一些操作。

我尝试运行它,在关闭了 UAC 的计算机上,它运行良好,无需任何其他设置。但是,在打开 UAC 的计算机上(在 Windows 7 中高于“从不通知”的任何级别),它会崩溃。我需要它在所有计算机上工作。

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

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

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

感谢您的帮助。

编辑:感谢您的回复。我意识到围绕 UAC 工作会让人不悦,而且我可以看到 Microsoft 不支持“白名单”,因此它只会请求一次许可。没关系,我可以尊重这一点,但我确实有一些后续问题:

  • 您能否提供一个链接,告诉我如何正确提升程序以纠正提升的状态?有没有关于选项等的任何文献...基本上我喜欢 UAC 101 指南。

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

    然而,在某些时候我将需要执行所有其余任务(无论如何用户都需要确认此操作),因此如果 UAC 在此时提示,那将没有问题。有没有办法在此时提升它,然后将其恢复为默认权限?

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

最佳答案

正确的方法是在程序启动时提升 UAC 提示(您可以通过程序的 list 进行设置)- 试图聪明地绕过它是不受欢迎的。

想一想 - 如果您可以安装无需 UAC 提示即可自动提升的东西……UAC 的意义何在?

要将 UAC list 添加到程序中,您只需将 list 添加到项目中并对其进行编辑。 UAC 的示例 list 是 here .如果你想在最后一刻提升,那么你需要一个单独的进程——你不能提升一个现有的进程。所以把那一点分开然后用

开始
Process.StartInfo.UseShellExecute = true;
Process.StartInfo.Verb = "runas";

关于c# - 安装必须以管理员身份运行的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2237460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com