Tag: registry

如何使用Microsoft.Win32.Registry.OpenSubKey直接转到特定键?

现在这是一个简单的问题。 它应该在MSDN中清楚地记录。 我看了,但我找不到它。 我唯一得到的是我必须在subkey之后打开子键才能找到我感兴趣的特定键。 当然,有一种更直接的方法来访问关键3级深度。 它是什么? 我已经试过了 RegistryKey reg = Registry.LocalMachine; reg.OpenSubKey(@”Software\Microsoft”, true); // reg is still HKLM ! 和 reg.OpenSubKey(@”Software\Microsoft\”, true); // reg is still HKLM !

注册表的哪个分支执行CE设备读取?

我的Windows CE(Motorola / Symbol)手持设备在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下面都有名为\ Software \ Microsoft \ Windows CE Services的文件夹。 HKEY_CURRENT_USER只有一个条目“DeviceFriendlyName”; 它由设备读取,因为设备在Windows资源管理器中标记有该键的值。 但是,HKEY_LOCAL_MACHINE怎么样? 它包含更多密钥,例如ExcludeExts,FileSyncPath,GuestOnly和c。 为什么在注册表中的两个不同位置有\ Software \ Microsoft \ Windows CE Services,并且都被设备读取? 关于HKEY_LOCAL_MACHINE下面的“ExcludeExts”键(即: lnk,tmp,cdb,mdb,sdf,sqlite )中的值是否得到尊重存在问题(我们不希望在这些值之间传输具有这些扩展名的文件)设备和与之连接的PC)。 通常情况下,它可以在我的机器上运行(sdf文件不再在我的开发机器上同步),但是测试部门说这对他们不起作用 – sdf文件仍然被放在“C:\”中PC上的Rompecabeza设备上的用户\ rompecabeza \ Documents \ Documents。 从我收集的内容来看,注册表值可能不区分大小写,但为了确保我更改了此代码: RegistryKey key = Registry.LocalMachine.CreateSubKey(@”SOFTWARE\Microsoft\Windows CE Services”); if (key != null) { key.SetValue(“GuestOnly”, 00000001, RegistryValueKind.DWord); key.SetValue(“ExcludeExts”, “lnk,tmp,cdb,mdb,sdf,sqlite”, RegistryValueKind.String); } ……对此: RegistryKey […]

通过ACL保护注册表项以删除对非管理员的所有访问权限

我正在尝试使用必须在客户端计算机上访问的一些重要信息来锁定注册表项,我不是非管理员可以访问此密钥。 如果您是管理员,您将能够比我在密钥中存储的更多损害。 我目前要做的是: //Allow access only to administrators and deny all rights to everyone else. System.Security.AccessControl.RegistrySecurity acl = new System.Security.AccessControl.RegistrySecurity(); acl.AddAccessRule( new System.Security.AccessControl.RegistryAccessRule( “Administrators”, System.Security.AccessControl.RegistryRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); acl.AddAccessRule( new System.Security.AccessControl.RegistryAccessRule( “Everyone”, System.Security.AccessControl.RegistryRights.FullControl, System.Security.AccessControl.AccessControlType.Deny)); //Prevent inherited read access from the software or company key allowing access. acl.SetAccessRuleProtection(true, false); MyKey.SetAccessControl(acl); 如果我说得对,这将拒绝所有人访问,允许显式访问管理员组中的任何人,并阻止所有inheritance的权限应用于我的密钥? 我想知道它是否会在我搞砸密钥上的ACL以便我无法删除之前等等。我是否应该将密钥的所有者设置为管理员组? PS:非常重要的是,密钥甚至不能作为非管理员读取,而不仅仅是更改。

Regedit显示未使用GetSubKeyNames()列出的键

我已经检查了一些关于SO的其他回复,但据我所知,这是一个与我得到的命中不同的问题。 当我打开RegEdit时,我可以看到一组键,但是当我从我的程序中列出它们时使用例如: Registry.LocalMachine.OpenSubKey(@”SOFTWARE”).GetSubKeyNames() 其中一些人失踪了。 我认为这可能与访问权限有关,所以我检查了.CurrentUser 。 在那里可以体验到相同的行为。 一些子键未列出。 我错过了什么?

通过C#从注册表中的“UserChoice”键中删除“拒绝”规则(权限)

我正在研究文件关联。 我已经确定在UserChoice中有一个名为UserChoice的键: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext]. 我已经能够读取和写入UserChoice密钥,只要我创建它并且它尚未由Windows创建。 但是,如果Windows已经创建了UserChoice密钥,那么我需要以管理员身份运行才能访问密钥。 我的最终目标是删除 UserChoice键。 我注意到Windows在UserChoice键上放置了拒绝规则,这阻止我删除该键。 如果我能成功删除该规则,我相信我将能够删除UserChoice密钥。 这是我尝试过的代码: public static void ShowSecurity(RegistryKey regKeyRoot, string user) { RegistrySecurity security = regKeyRoot.GetAccessControl(AccessControlSections.All); foreach (RegistryAccessRule ar in security.GetAccessRules(true, true, typeof(NTAccount))) { if (ar.IdentityReference.Value.Contains(User) && ar.AccessControlType.ToString().ToLower() == “deny”) { security.RemoveAccessRuleSpecific(ar); regKeyRoot.SetAccessControl(security); } } } 当Windows创建UserChoice键时,它为Type Deny的当前用户添加安全规则; 许可:特别 。 此规则不是inheritance的,仅适用于UserChoice键。 随着管理员的一些混乱和运行我能够访问RegistryAccessRule 。 但是,即使以管理员身份运行,我也无法删除此规则。 我在研究中的某处读到,没有一种编程方式可以做到这一点。 我可以通过RegEdit删除此规则。 我还可以使用NirSoft的文件类型管理器删除UserChoice密钥。 所以我假设有一些方法可以做到这一点。 简介:有没有办法可以删除拒绝规则,以便删除UserChoice密钥?

远程注册表

我知道有几次谈到远程注册表访问,但我找不到任何关于如何实现这一点的好例子。 我确实找到http://www.codeproject.com/KB/cs/cpimpersonation1.aspx ,它似乎有代码可以做我想要的,但是,这似乎是连接到运行应用程序的同一台PC。 我想要的是连接到不同域中的远程PC。 我一直在做一些阅读,但无法弄清楚如何修改此代码来做到这一点。 如何使用代码连接到远程PC将获得任何帮助。

在二进制值中将Stringformated Hex块写入注册表

我真的被某事搞定了。 我有一个包含hex值的字符串: string creatorSid = @“01,05,00,00,00,00,00,05,15,00,00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3 ,7c中,EE,03,00,00″ ; 我想把它放到需要二进制值的registrykey中。 我试过这个: key.SetValue(“creatorSID”,creatorSid,RegistryValueKind.Binary); 但是我收到了无法转换的错误消息。 到目前为止,这是完整的代码: class Program { static void Main(string[] args) { String printerName = “Naked”; RegistryKey key = Registry.LocalMachine.OpenSubKey(@”SYSTEM\CurrentControlSet\Control\Print\Printers\” + printerName , true); string security = “01,00,0c,80,d0,00,00,00,dc,00,00,00,00,00,00,00,14,00,00,00,02,” + “00,bc,00,07,00,00,00,00,00,24,00,0c,00,0f,00,01,05,00,00,00,00,00,05,15,00,” + “00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3,7c,ee,03,00,00,00,09,24,00,30,00,0f,” + “00,01,05,00,00,00,00,00,05,15,00,00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3,7c,” + “ee,03,00,00,00,09,14,00,00,00,00,10,01,01,00,00,00,00,00,03,00,00,00,00,00,” + “00,14,00,08,00,02,00,01,01,00,00,00,00,00,01,00,00,00,00,00,0a,14,00,00,00,” + “00,20,01,01,00,00,00,00,00,01,00,00,00,00,00,00,18,00,0c,00,0f,00,01,02,00,” + “00,00,00,00,05,20,00,00,00,20,02,00,00,00,0b,18,00,00,00,00,10,01,02,00,00,” + “00,00,00,05,20,00,00,00,20,02,00,00,01,01,00,00,00,00,00,05,12,00,00,00,01,” + “01,00,00,00,00,00,05,12,00,00,00”; […]

C#将注册表添加到LocalMachine的键失败

我正在尝试在注册表中添加一个键到LocalMachine 。 我正在使用此代码: System.Diagnostics.Debugger.Launch(); RegistryKey key = Registry.LocalMachine.OpenSubKey(“SOFTWARE”, true); RegistryKey newkey = key.CreateSubKey(“1asdasds”, RegistryKeyPermissionCheck.ReadWriteSubTree); newkey.SetValue(“ads”, “ddsds”); newkey.Close(); 我在管理员帐户上运行它。 我用“以管理员身份运行”运行它,但没有添加到注册表:(。当我将LocalMachine更改为CurrentUser ,实际上它被添加到CurrentUser键。但是如何强制将它添加到LocalMachine?

我添加了一个注册表项,但我无法以编程方式找到它

所以我使用RegEdit将以下内容添加到我的工作站上的注册表中: HKLM \ SOFTWARE \富\酒吧 Bar具有ak / v对“wtf”/“idk”。 我通过关闭注册表并重新打开它来validation这些更改“采取了”。 嘿,他们还在那里! 胀。 RegistryKey key = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Foo\Bar”); if (key != null) { var = key.GetValue(“wtf”).ToString(); } 问题是,key为null。 什么时候。 。 。 Registry.LocalMachine.OpenSubKey(“Software”).GetSubKeyNames() 被称为,Foo不会出现在众多的SubKeyNames中。 所以,我显然错过了一些愚蠢的东西。 具体到底我错过了什么?

C#为所有文件类型向Windows资源管理器添加上下文菜单项

我正在编写一个应用程序,我需要修改Windows资源管理器的上下文菜单,以便我可以在应用程序中调用一个方法,用于在Windows资源管理器中看到的所有文件/文件夹。 由于在stackoverflow(以及教程)上已经有很多关于如何为特定文件类型添加上下文菜单的post我已经知道通常通过将应用程序分配给这些文件类型的注册表项的正确部分来完成。 因为我不想仅限于特定的文件类型我的问题是:有没有办法将这个新的上下文菜单项分配给所有文件类型(除了通过以。开头的每个注册表项并在那里分配应用程序) ?