Tag: 注册表

Registry.GetValue始终返回null

我的注册表中有以下密钥: 在: HKEY_LOCAL_MACHINE\SOFTWARE\RSA我有值对象调用 – WebExControlManagerPath ,其值为c:\ 我想这样做: var r = Registry.GetValue(@”HKEY_LOCAL_MACHINE\SOFTWARE\RSA”, “WebExControlManagerPth”,null); if(r!=null) ProcessAsUser.Launch(ToString()); 但r值始终为null。 有任何想法吗?

如何检查COM dll是否已注册C#?

我需要检查msdia100.dll是否在我正在运行的计算机系统上注册,以便使用命令regsvr32.exe注册dll。 我怎么能用C#做到这一点?

如何在C#中找到已安装应用程序的升级代码?

我正在使用WIX工具集中的Windows Installer API的C#包装器。 我使用ProductInstallation类来获取有关已安装产品的信息,例如产品代码和产品名称。 例如 产品名称 – “我的测试应用” 产品代码 – {F46BA620-C027-4E68-9069-5D5D4E1FF30A} 产品版本 – 1.4.0 在内部,这个包装器使用MsiGetProductInfo函数。 不幸的是,此function不会返回产品的升级代码。 如何使用C#检索已安装应用程序的升级代码?

在启动时启动应用程序,使用错误的路径加载

我正在使用注册表项将我的应用程序设置为在Windows Startup上加载(用户登录后)。 我的代码: RegistryKey RegKey = Registry.LocalMachine; RegKey = RegKey.OpenSubKey(@”SOFTWARE\Microsoft\Windows\CurrentVersion\Run”, true); RegKey.SetValue(“AppName”, “\”” + @”C:\Users\Name\Desktop” + “\””); RegKey.Close(); 因此,使用此代码,我的应用程序在启动时加载,但工作目录是 C:\ Windows \ System32下 有谁知道为什么? 这对我不起作用,因为该程序需要在与该操作相同的目录中的几个文件。 如果程序加载在我选择的目录(“C:\ Users \ Name \ Desktop”)上,则问题将不存在。 有人对此有任何建议吗?

C#在64位操作系统上读取错误的注册表数据

我正在使用64位Windows,我的应用程序以提升的权限运行。 我有一个问题,以下非常简单的代码: myKey = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Microsoft\Windows\CurrentVersion\Run”); if (myKey != null) { string[] HKLMvaluenames = myKey.GetValueNames(); } 但由于某种原因,HKLMvaluenames数组中填充了以下键中的值: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run 有没有解决这个问题的方法?

如何显示与文件类型关联的所有程序的列表?

我正在寻找构建一个打开列表,就像在窗口上下文菜单中,为图像文件。所以我怎么能得到与文件类型相关的所有程序的列表?

设置程序必须在启动时从安装程序运行

我有一个C#.net 4应用程序,我开始创建安装程序。 安装的程序工作正常,但我的客户希望应用程序从窗口开始(它是一个“始终顶部”工具栏,帮助他们管理他们的调用)。 我想创建一个“类安装程序”,并在其中插入一个键在注册表中。 我有两个问题: 第一:如何找到可执行路径? 它可以在安装之间改变。 我在某处找到了Application.ExecutablePath,但它似乎位于Application.Window.Forms中,所以我认为它与WPF不兼容 第二:我需要在本地计算机的注册表中插入此密钥。 Windows安装程序中是否有一种方法可以指定用户必须具有管理员权限? 这是我开始的代码: RegistryKey rkApp = Registry.LocalMachine.OpenSubKey(“SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run”, true); rkApp.SetValue(“CstStart”, ???); 非常感谢您的帮助! 编辑:我发现我可以通过以下方式传递给我的自定义操作一些数据: / DIR = “[TARGETDIR] \” 在CustomActionData中。 通常它说我可以通过它检索它 this.Context.Parameters[“DIR”]; 但是….似乎在我的安装程序类中,this.Context为null 🙁 EDIT2:Context是null因为我在构造函数中这样做,我现在正在这个事件中执行此操作.AfterInstall现在我得到一个上下文,它似乎包含一个var“assemblypath”,其中包含我需要的路径。

Registry GetSubKeyNames()列出了与Regedit不同的密钥?

我们正在使用WIX来安装我们创建的许多服务。 我正在编写一个快速实用程序来转储当前安装的服务。 我只是迭代以下的子键: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 寻找DisplayName 。 问题是,我的十项服务中只有两项出现在列表中。 但是,当我查看Regedit中的子键时,它们就在那里。 同样,它们在已安装的程序中(我也可以在Win32_Product的SELECT *中找到它们)。 我浏览了MSDN文档,试图找出是否有一些我错过的注册表的特殊视图。 也许这是一个特权问题? 但我正在以管理员身份运行该工具。 是否有一些蜂巢安装问题? 为了清楚代码,这里是测试应用程序代码(来自这个答案 ): String registryKey = @”SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”; using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey)) { foreach(String subkeyName in key.GetSubKeyNames()) Console.WriteLine(key.OpenSubKey(subkeyName).GetValue(“DisplayName”)); } 有什么想法吗?

C# – 在没有用户确认框的情况下将reg文件导入注册表

C#winforms – 如何将reg文件导入注册表? 以下代码向用户显示确认框(是/否)。 Process regeditProcess = Process.Start(“key.reg”, “/S /q”); // not working regeditProcess.WaitForExit();

模拟管理员帐户以编辑注册表项不起作用(C#)

我使用以下代码编辑本地计算机配置单元中的注册表项(’SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \%SID%’)。 在我真正尝试打开注册表项(具有写权限)之前,一切似乎都没有问题; 抛出SecurityException,并显示消息“不允许请求的注册表访问”。 我已经检查并重新检查了注册表项和我冒充的用户的权限,并且全部检出。 登录到模拟用户的帐户时,代码运行正常,但是当以受限用户身份登录时,代码会失败。 这就像模仿一样,除了给予线程管理权限。 任何关于如何解决这个问题的想法将不胜感激! string KEY_STR = “SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\” + WindowsIdentity.GetCurrent().User.Value; WindowsImpersonationContext adminContext = null; IntPtr tokenHandle = new IntPtr(0); try { LogonUser(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle); if (tokenHandle.Equals(new IntPtr(0))) LogonUser(userName, computerName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle); WindowsIdentity adminIdentity = […]