是否可以使用C#运行软件程序(例如autocad)而没有确切的文件路径?

时间:2013-12-07 14:14:23

标签: c# winforms diagnostics

我有以下代码来运行AutoCAD软件:

string path = @"C:\Program Files\Autodesk\AutoCAD 2012 - English\acad.exe";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = path;
p.Start();

但是使用这段代码我需要acad.exe的确切文件路径

我希望能够做的是点击按钮,让我的代码找到AutoCAD并运行。 但如果找不到,请显示一条消息。

2 个答案:

答案 0 :(得分:1)

AutoCAD.Application类已注册并已本地化为路径。如果您愿意,可以从注册表中获取路径并将其用于进程启动。另外,您可以使用激活器从ProgId创建一个激活器,如果您打算与AutoCAD进行交互,这将更有意义。

   Activator.CreateInstance(Type.GetTypeFromProgID("AutoCAD.Application"));

查看AutoCAD互操作库,了解如何使用它。

答案 1 :(得分:0)

我想你需要下面的东西;

using System;
using System.IO;

namespace FileLocator
{
 class Program
 {
  static void Main(string[] args)
  {
   string filename = "wmplayer.exe";// Only for example.Change to your exe's name.
   string searchFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86).Replace("Common Files", "");// ProgramFiles (x86) folder
   foreach (string directory in Directory.GetDirectories(searchFolder))// Iterate through each folder in PFx86.
   {
    foreach (string directoryfilename in Directory.GetFiles(directory, "*.exe"))// Get all files with .exe extension.
    {
     if (Path.GetFileName(directoryfilename) == filename)//If Current filename==wmplayer.exe
     {
      Console.WriteLine("Found {0} in {1}", filename, directory);
      Console.WriteLine("Complete Path => {0}", directoryfilename);
      Console.ReadLine();
     }
    }
   }
}
}
}

这个方法循环遍历目标中的每个文件夹,现在它的PFx86找出我们需要的东西。警告说这种技术可以抛出大量的安全异常。