2014-06-19 4 views
0

Есть ли способ найти путь для получения пути исполняемого файла Excel на C# или VB.Net? Я знаю эти два варианта ниже, но, к сожалению, они не подходят. Пожалуйста, предложите, если у вас есть альтернатива.Как получить путь к установленному Excel.exe программно?

  1. Использование реестра
  2. Использование Process.Start("Excel") и получить путь от процесса Excel

Невозможно использовать параметр реестра, потому что люди, не имеющие достаточных прав может использовать мое заявление, и, следовательно, мы хотели бы остаться в стороне , Если это предположение неверно, и реестр является надежным для любого уровня прав доступа пользователей, пожалуйста, дайте мне знать.

С помощью второго варианта, я вижу, что процесс Excel открывается, если есть способ, которым я могу начать, но у меня нет процесса Excel для пользователя, это может сработать.

+1

Справочник ползает тогда? Его в значительной степени единственный вариант, оставленный, и его медленный, и имеет больше ошибок. Но подход к реестру более подходит, у всех будет доступ к чтению, который вам нужен. – cjb110

+2

Использование реестра: http://visualbasic.about.com/od/quicktips/qt/regprogpath.htm или это http://stackoverflow.com/questions/3831028/resolve-path-of-excel – Neolisk

+1

Почему вы хотите знаете путь к EXE? Для чего тебе это? Я спрашиваю, потому что я делаю всевозможные вещи с помощью excel и никогда не нуждался в полном пути. – Steve

ответ

1

я закончил с этой логикой и служит своей цели. Если Excel - это работающий процесс, то я получаю путь оттуда, если не получаю, создавая экземпляр, который фактически не отображает интерфейс Excel, а работает в фоновом режиме.

  string path = string.Empty; 

      Process[] processlist = Process.GetProcesses(); 
      foreach (Process theprocess in processlist) 
      { 
       if (theprocess.ProcessName == "EXCEL") 
       { 
        path = theprocess.MainModule.FileName; 
        break; 
       } 
      } 

      if (path == string.Empty) 
      { 
       Type officeType = Type.GetTypeFromProgID("Excel.Application"); 
       dynamic xlApp = Activator.CreateInstance(officeType); 
       xlApp.Visible = false; 
       path = xlApp.Path + @"\Excel.exe"; 
       xlApp.Quit(); 
      } 
1

Проверить на этом link

Вы можете начать процесс скрытый, так что пользователь не будет видеть окно

startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
1

Вы можете запустить его скрытые и закрыть его. Вы должны включить Interop услуги для кода ниже

Dim xl As Excel.Application = New Excel.Application 
    xl.Visible = False 
    Dim Excel_Path As String = xl.Path() 
    xl.Quit() 
Смежные вопросы