通过C#编程如何启动电脑上安装的软件

xiaoforward 2014-07-10 03:18:34
大家好:
我现在想通过C#写一个启动软件的小程序,例如软件名称为AotuCAD软件(绘图软件),在电脑上安装有AutoCAD不同的版本,AutoCAD2007、AutoCAD2010、AutoCAD2012、AutoCAD2013,这几个版本有的安装在C盘,有的安装在D盘或者其它的盘,如D:\..\..\,如何通过C#实现启动软件的功能,具体见下图,谢谢!
启动软件的小窗体程序:

AutoCAD的exe文件如下:
...全文
614 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoforward 2014-07-13
  • 打赏
  • 举报
回复
呵呵,可以多多交流下子呀!
liyouzhi789 2014-07-13
  • 打赏
  • 举报
回复
这个想法,怎么和电脑管家,桌面软件之类的想发相似啊?如果真是这样的话,慢慢的我们可以写个电脑管家处理。
xiaoforward 2014-07-13
  • 打赏
  • 举报
回复
能用代码简单的说明下子吗?谢谢
save4me 2014-07-11
  • 打赏
  • 举报
回复
参考: 获取计算机已安装软件列表,先获取已安装软件的列表,当然你还要在下面的代码里加上INSTALLPROPERTY_INSTALLLOCATION来获取安装路径。然后就可以用Process去启动程序。 该方法只对安装的程序有效,对绿色免安装的软件可能只能手动提供路径了。

static void Main()
{
    StringBuilder result = new StringBuilder();
    for (int index = 0; ; index++)
    {
        StringBuilder productCode = new StringBuilder(39);
        if (MsiEnumProducts(index, productCode) != 0)
        {
            break;
        }

        foreach (string property in new string[] { "ProductName", "Publisher", "VersionString", })
        {
            int charCount = 512;
            StringBuilder value = new StringBuilder(charCount);

            if (MsiGetProductInfo(productCode.ToString(), property, value, ref charCount) == 0)
            {
                value.Length = charCount;
                result.AppendLine(value.ToString());
            }
        }
        result.AppendLine();
    }
    Console.WriteLine(result.ToString());
}
       
[DllImport("msi.dll", SetLastError = true)]
static extern int MsiEnumProducts(int iProductIndex, StringBuilder lpProductBuf);

[DllImport("msi.dll", SetLastError = true)]
static extern int MsiGetProductInfo(string szProduct, string szProperty, StringBuilder lpValueBuf, ref int pcchValueBuf);
  • 打赏
  • 举报
回复
注册表读取一下吧,注册表你只需要把每个版本的cad注册信息位置列表搜索,不用便利,还能发现未安装或绿色版未启动的cad。但是劣势就是要管理员权限。不过你硬盘便利也一样要管理员权限。 这里还有个偷懒的办法,就是把你的exe放在cad目录执行有效,使用说明多写两句话怎么找自己cad安装路径,然后在桌面创建快捷方式。这个办法可以很跳过获取步骤,但是用户操作上增加了少量难度。
xiaoforward 2014-07-10
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
[quote=引用 6 楼 xiaoforward 的回复:] 1. 程序路径不固定,有可能安装在电脑中的任何一个盘中,但是acad.exe一定在一个AutoCAD20xx的文件夹中
你应该先保证在不同安装电脑中,你的那种说法总是可行的。[/quote] 在不同电脑中这种方法可行。
於黾 2014-07-10
  • 打赏
  • 举报
回复
遍历文件夹可不是什么好主意 有可能第一次运行,一搜索就是72小时
xiaoforward 2014-07-10
  • 打赏
  • 举报
回复
还有一个问题,如何指定文件夹在电脑中的路径,如AutoCAD2007这个文件夹在D;\Program Files\AutoCAD2007,如何利用C#编程搜索AutoCAD2007这个文件夹名称,然后返回它的路径D;\Program Files\AutoCAD2007。谢谢!
xian_wwq 2014-07-10
  • 打赏
  • 举报
回复
启动指定exe


        /// <summary>
        /// 启动进程
        /// </summary>
        public static void Start(string Name,string FilePath)
        {
            try
            {
           
                Process[] myPS = System.Diagnostics.Process.GetProcessesByName(Name);
                ///如果没有启动,则启动
                if (myPS.Length == 0)
                {
                   
                    Process mProcess = new Process();
                    mProcess.StartInfo.FileName = FilePath + "\\" + Name+".exe";
                    Directory.SetCurrentDirectory(FilePath);
                    mProcess.Start();
                   
                } 
            }
            catch (Exception e)
            {
              
            }
        }

  • 打赏
  • 举报
回复
引用 6 楼 xiaoforward 的回复:
1. 程序路径不固定,有可能安装在电脑中的任何一个盘中,但是acad.exe一定在一个AutoCAD20xx的文件夹中
你应该先保证在不同安装电脑中,你的那种说法总是可行的。
  • 打赏
  • 举报
回复
你还是先把不同程序的名称跟启动路径整理到一个配置文件里吧。
xiaoforward 2014-07-10
  • 打赏
  • 举报
回复
1. 程序路径不固定,有可能安装在电脑中的任何一个盘中,但是acad.exe一定在一个AutoCAD20xx的文件夹中
xiaoforward 2014-07-10
  • 打赏
  • 举报
回复
大家好:感谢大家的回复 1. 程序路径不固定,有可能安装在电脑中的任何一个盘中,但是acad.exe一定在一个AutoCAD20xx的文件中。 2. “后台搜索文件路径,或者安装 cad 读取他的注册表 路径,进行运行"这个能详细点吗?做好有段代码,小弟接触C#时间较短,望不吝赐教。 谢谢!
花落_ 2014-07-10
  • 打赏
  • 举报
回复
后台搜索文件路径,或者安装 cad 读取他的注册表 路径,进行运行。
geyewei 2014-07-10
  • 打赏
  • 举报
回复
看你的描述,似乎程序名和路径都是固定的。那么就找个地方把版本号和可执行文件的完整路径的对应关系保存起来。通过软件版本那个ComboBox,找到对应的路径,用Process.Start()函数,如何?
於黾 2014-07-10
  • 打赏
  • 举报
回复
我觉得你应该到开始菜单所在的文件夹去找快捷方式 否则全部使用绝对路径,你就只能在自己电脑上跑着玩,完全没有实用性.
wangnaisheng 2014-07-10
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/maomixi/2392486 参考

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧