c# - 如何在 WinForms 中强制用户使用管理员帐户

标签 c# .net windows winforms windows-7

我有一个简单的 WinForms 应用程序,可以修改 Windows 注册表。问题是在 Vista/Windows 7 中我需要强制用户切换到管理员。

我不想强制用户在应用程序启动时以管理员身份运行。我希望他在有必要写入注册表时这样做。

最好的情况是当用户需要“切换”到管理员时,出现与许多设置中出现的完全相同的消息,因此没有必要以管理员身份运行表单开始。

我如何在 .Net 中实现这一点?

最佳答案

如果应用程序有时不执行注册表操作而有时执行注册表操作,则分区是可行的方法。分区的三个关键是 (1) 在第二个 exe 上有一个 list ,正如 Ho 所说,(2) 在按钮/菜单项上放置一个屏蔽,以便用户期望提升,以及 (3) 使用 ShellExecute 启动它(之前调用 Start,将 UseShellExecuteFlag 设置为 true)以便使用 list 。

但是,在开始拆分您的应用程序之前,我想问两个问题。首先,它是否曾经用于非管理目的,或者每个用户是否总是“单击该按钮”并需要提升?如果是这样,那么只需在应用程序上放置一个管理 list ,不要对其进行分区。其次,您确定需要写入注册表的那部分吗?你能把你的 key 移到 HKCU 下的东西吗?如果可以,那么您就不再需要提升,每个人都会更快乐。我总是喜欢首先考虑这些可能性,因为与分区相比,它们意味着更少的代码和更少的测试。

关于c# - 如何在 WinForms 中强制用户使用管理员帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2680229/

相关文章:

c# - 确定整数溢出是否超出或低于界限

c# - 如何将二进制文件转换为另一种二进制表示形式,如图像

c# - 枚举的显示文本

c# - XDocument.Save() 在每个 XElement 上添加不需要的命名空间

c - 缺少 kernel32.dll 的依赖项

c# - 如何将我的字符串作为代码执行

c# - 检查 FrameworkElement 是否有 Border

.NET - 从用作网络摄像机的 Windows 手机获取视频流

php - CURLOPT_VERBOSE 不工作

windows - 如何从命令提示符*不带换行符*发送 EOF?