微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决Windows 7中registry操作限制的解决方法?

好了,因为在XP中,大多数人都以pipe理员身份login – 程序员可以很容易地使程序与registry一起工作。 我想要做的是这样的:

该软件已启动,并在registry中作为启动进程添加 – 但是,只有在应用程序closures时才会执行此操作,而不是在此之前。

然而,这在xp中不起作用,因为用户在Vista,7,2008中的限制和相同的事情。

什么是解决方法? 我正在考虑让程序创build一个计划任务,或附加到一个更高级别的进程? 任何工作方式? 因为我的软件是.net相关 – 实际上同样的事情发生,并在C + + – 但我暗暗希望网提供更简单的方法解决它。 提前10倍!

如何使用Web服务将批处理模式下的条形码扫描器连接到Web应用程序?

一个Windows服务打开一个对话窗口

在Windows上有一个posix SIGTERM的替代品吗? – (轻松杀死控制台应用程序)

如何创build虚拟Windows驱动器

Windows数据包嗅探器可以捕获环回stream量?

在.NET中的事务性打开/写入/replace?

无法调用SystemParametersInfo

使用System.Security.Cryptography将Win32 Crypto API调用转换为C#

一个cpu上运行Java线程

如何显示文件属性对话框安全选项卡从C#

嗯,这不是Windows 7的限制 ; 这实际上是通过设计。 详情请参阅我的答案 。

你所需要的就是过程标高 。 这是处理这个问题的标准方式,UAC中内置了一个机制,允许用户管理员身份进行身份验证,并暂时获得该标题所带来的所有权限和责任。 Windows本身使用这个地方:

这里有一个非常棒的how-to文章 在.NET中使用Shield图标,UAC和进程提升 。

但只是在链接腐烂的情况下总结,这里是步骤:

确定用户是否具有适当的权限。 最简单的方法调用IsUserAnAdmin API函数

使用“盾牌”图标通知用户需要提升。 在WinForms中,需要将按钮的FlatStyle属性设置为“System”,并使用P / Invoke来显示屏蔽。 示例代码

[DllImport("user32.dll",CharSet = CharSet.Auto)] public static extern IntPtr SendMessage(IntPtr hWnd,int Msg,IntPtr wParam,IntPtr lParam); public const int BCM_SETSHIELD = 0x0000160C; public static void SetButtonShield(Button btn,bool showShield) { // Verify that we're running on Vista or later if ((Environment.Osversion.Platform == PlatformID.Win32NT) && (Environment.Osversion.Version.Major >= 6)) { SendMessage(btn.Handle,BCM_SETSHIELD,IntPtr.Zero,showShield ? new IntPtr(1) : IntPtr.Zero); } }

管理员权限重新启动进程。 这涉及到显示提升对话框以允许用户提升程序。 示例代码

processstartinfo psi = new processstartinfo { Arguments = "-justelevated",ErrorDialog = true,// Handle is the handle for your form ErrorDialogParentHandle = Handle,FileName = Application.ExecutablePath,Verb = "runas" }; try { Process.Start(psi); Close(); } catch (Exception ex) { // the process Couldn't be started. This happens for 1 of 3 reasons: // 1. The user cancelled the UAC Box // 2. The limited user tried to elevate to an Admin that has a blank password // 3. The limited user tries to elevate as a Guest account MessageBox.Show(ex.Message); }

[可选]在您的应用程序中添加代码签名,以便使用更令人愉快的灰色或蓝色替换呈现敌意的黄色UAC标高。

它应该是每个用户,然后你将不会有权限问题。 HKCU 软件微软的Windows CurrentVersion Run中

有限的用户的全部目的是防止这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐