2012-02-18 109 views
0

我创建了一个自定义绘图程序,它比Microsoft Paint更好,更好,现在我在程序的第二阶段,在那里我想替换旧的mspaint.exe所在的位置在C:\ WINDOWS \ SYSTEM32 \ mspaint.exe与我的定制油漆的应用程序,我试图通过键入命令的事:在windows xp中替换mspaint.exe

System.IO.File.Copy(@"mspaint.exe", "C:\\WINDOWS\\system32\\mspaint.exe", true); 

,那就是未成功,我只是试图让我的自定义应用程序是默认的绘图程序,但一旦我这样做,旧mspaint不断回来!

编辑:我尝试这样做,在Windows XP

编辑2:我犯了一个regestry键:LOCAL_MACHINE \ SOFTWARE \微软\的Windows NT \ CURRENTVERSION \图像文件执行选项\ mspaint.exe,并提出了名称的字符串值:调试器,并添加字符串:C:\ WINDOWS \ SYSTEM32 \ mypaint.exe,每当我尝试打开任何图像,我得到错误信息:

Unable to find a version of the runtime to run this application 

和我的自定义程序未能启动。

+4

呃...当用户转到“开始”,“运行”并键入“mspaint”,其中“ms”是MicroSoft的简称时,是否真的想开始绘制程序?或者,当用户双击图像文件时,是否只想打开绘画程序? – hvd 2012-02-18 14:33:15

+2

没有“默认”绘图程序。只需安装你的设备并提供一种方法来更改正确类型的文件关联(例如.bmp等)。这是执行此操作的错误方法,但Windows文件夹的安全限制不会让您这样做。 – Joe 2012-02-18 14:40:55

回答

1

也许你可以使用image file execution options注册表来转发呼叫mspaint.exe到您的exe文件。

为了这样:

  1. Ceate下HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options
  2. 名称的新注册表项将其与mspaint.exe
  3. 添加一个字符串值,命名为debugger,并将其值设为您的exe文件
+0

我试过这种方法,我创建了一个名为mspaint.exe的密钥,并在其中创建了一个字符串值:调试器的值为:“%systemroot%\ system32 \ mspaint1.exe”“%1”,但每当我打开exmaple loacted在D:\,我德尔错误:Windows无法找到文件D:\ image.png,请确保您输入正确的名称,然后再试一次。 – BOSS 2012-02-18 14:49:13

+0

@ user1215216,我不确定你需要添加“%1”。我认为发送到原始exe文件的参数传递给新的(不知道,但这就是我记得的)。如果你只是尝试打开mspaint它会启动你的exe文件吗? – Elisha 2012-02-18 14:56:18

+0

我删除了%1,但仍然不打开我的exe文件 – BOSS 2012-02-18 15:11:35