我知道我们不应该再使用注册表来存储应用程序数据了,但是在更新旧版应用程序时(并希望进行最少的更改),哪些注册表配置单元是非管理员允许使用的?
我可以HKEY_CURRENT_USER在HKEY_LOCAL_MACHINE没有管理员权限的情况下访问所有(当前访问的应用程序)
我得到了,"无法加载文件或程序集'Bla'或其中一个依赖项.试图加载一个格式不正确的程序."
部分详细信息说:
"WRN:程序集绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败会导致一些性能损失要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]."
因此,考虑到这一点可能会让我深入了解为什么我收到上述错误(也许下一个YSOD会包含更明确的信息,说明它失败的原因),我导航到注册表中的那个位置,但是没有这样的键我能看到.它的作用是:
\Fusion
(Default) value not set
\GACChangeNotification
\NativeImagesIndex
\PublisherPolicy
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
在启动我的应用程序时,我试图查看用户是否安装了特定版本的软件,特别是MySQL连接器,都使用c#.在注册表中,MySQL包含一个版本条目.所以我想要完成的是这个.
我的应用程序启动了.在启动代码的某处,我需要按顺序执行以下操作.检查用户是否安装了MySQL连接器,该连接器位于...
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Connector/Net
如果用户安装了连接器,我想检查它们的版本,存储为Name ="Version"和Data = xxx(下图)
现在,如果用户安装了特定版本,那么我将执行其他代码,这是我可以从中获取的代码.
最好的解决方法是什么?

编辑:下面是我目前的代码,我在第19行收到错误(注释).我的错误说" error CS1001: Identifier Expected"我无法弄清楚这意味着什么.有帮助吗?
using System;
using Microsoft.Win32;
using System.Data;
public class regTest
{
public static void Main()
{
try
{
RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\MySQL AB\\MySQL Connector\\Net");
if (key != null)
{
Object o = key.GetValue("Version");
if (o != null)
{
Version version = new Version(o as String); //"as" because it's REG_SZ...otherwise ToString() might be safe(r)
Version broken = new Version("6.7.4");
if (version.Equals.(broken)) //This is where …Run Code Online (Sandbox Code Playgroud) 我是一名新的Windows程序员,我不确定应该在哪里存储用户可配置的应用程序设置.我理解需要为用户提供用户友好的方式来更改应用程序设置,例如编辑| 设置表单或类似.但是,在用户点击该表单上的"应用"按钮后,我应该在哪里存储值?
在Windows注册表中存储设置与将其存储在本地INI文件或配置文件或类似文件中的优缺点是什么?
我有一些代码读取注册表并查找值,HKEY_LOCAL_MACHINE\Software\App\但在64位版本的Windows上运行时,值不足HKEY_LOCAL_MACHINE\Software\Wow6432Node\App\.
我该如何最好地接近这个?我是否需要64位安装程序,还是应该重写代码来检测这两个位置?
我正在尝试在cmd(bat文件)中运行此reg代码,但我无法使其工作.我哪里做错了?
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"HomePage"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
如果我将它作为一个reg文件并双击,它就可以工作.
Bat文件代码(这不起作用,没有错误):
@echo off
reg add "HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel" /V HomePage /T REG_DWORD /F /D 1
Run Code Online (Sandbox Code Playgroud) 我想在起始页面上清除项目列表......我该怎么做?我知道我可以在注册表中跟踪它,但是有一条经过批准的路线吗?
是否可以通过.bat/.cmd脚本修改注册表值(无论是字符串还是DWORD)?
我正在编写一个修改实用程序来修改一些键HKEY_CLASSES_ROOT.
所有在Windows XP等下工作正常.但是我Requested registry access is not allowed在Windows 7下遇到错误.Vista和2008我也猜错了.
我应该如何修改我的代码以添加UAC支持?
Microsoft的ClickOnce部署系统提供了一个易于使用的文件关联管理器,该管理器内置于Visual Studio部署过程中.开发人员最多可以添加8个文件关联,当用户运行ClickOnce安装程序时,这些关联将自动与其应用程序关联.
我想更进一步,但是:我希望允许用户在我的应用程序中安装后手动添加或删除其他文件关联.
我有两个动机来完成这个:
与传统Windows应用程序不同,ClickOnce应用程序不是通过其可执行文件直接启动的.相反,它们通过一个特殊的.appref-ms快捷方式启动,该快捷方式处理幕后的ClickOnce魔术(自动更新,在可视化目录中查找可执行文件%LOCALAPPDATA%等).
如果通过其可执行文件直接打开ClickOnce部署的应用程序,则会禁用自动更新,并且ClickOnce特定的方法将不再起作用.因此,我的用例不可能使用传统的注册表文件关联.
下图演示了Visual Studio 2010的内置ClickOnce文件关联管理器.此信息存储在应用程序的.manifest文件中,并在安装时添加到Windows注册表中.

我已经完成了对我的注册表的一些挖掘,并确定了ClickOnce安装程序创建的几个条目,以将文件类型与ClickOnce部署的应用程序相关联.
我在注册表中找到的ClickOnce文件类型关联的示例注册表项:
rundll32.exe dfshim.dll, ShOpenVerbExtension {ae74407a-1faa-4fda-9056-b178562cf98f} %1
凡{ae74407a-1faa-4fda-9056-b178562cf98f}在其他几个位置使用在注册表中相关的应用程序GUID.
我的目标是了解必须将哪些信息添加到注册表(以编程方式)以手动将文件与ClickOnce部署的应用程序相关联.
任何帮助表示赞赏!
registry ×10
c# ×4
windows ×3
.net ×2
batch-file ×2
cmd ×2
64-bit ×1
automation ×1
clickonce ×1
deployment ×1
ini ×1
mru ×1
privileges ×1
regedit ×1
security ×1
settings ×1
uac ×1
wow64 ×1
ysod ×1