有一个 bat 文件可以更改LocalMachine
. 我使用它是因为您Registry.LocalMachine
不能在其中删除或创建部分。
bat文件代码:
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{863aa9fd-42df-457b-8e4d-0de1b8015c60}" /f
并且有一个运行它的代码。但是有一个问题,当应用程序执行一个bat文件时,它会写:找不到注册表中指定的节或参数。如果 bat 文件是手动运行的,那么一切正常。该怎么办?
bat文件启动代码:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/k cd " + Application.StartupPath + "/Bin & -searchprinters.bat";
proc.StartInfo.WorkingDirectory = @"C:\Programs";
proc.Start();
问题的屏幕截图(在没有权限的情况下启动,但它有效):
您必须具有构建目标架构Any CPU。
尝试使用
Registry.LocalMachine
,但为x64处理器架构构建应用程序。.bat
该文件也应该工作。问题在于
WOW64
32 位应用程序在 64 位操作系统上的虚拟化,详情请点击此处。也可以在不改变装配架构的情况下进行固化,但这已经比较困难了。
为了不至于毫无根据,举一个真实项目的例子。该应用程序是 32 位 x86 构建,因为 SDK 库是 32 位的。但是您需要在注册表中配置智能卡在启动时呈现给阅读器时的行为。但是驱动程序是 64 位的(在阅读器上),所以在注册表的两个分支中都有一个任务来编辑数据。