2015-09-28 2 views
1

Я работаю над приложением, которое открывает расширение файла. Первое, что я делаю, это проверить путь к файлу, который был открыт. Этот кусок кода работает отлично на некоторых ПК, но отказывается правильно работать на другом компьютере, работающем под управлением Windows 7. Вот код:Открыть файл (двойной щелчок), не отправляя аргументы в C# applitacion

if (args.Length > 0) 
{ 
    if (!args[0].EndsWith(".myext1") && !args[0].EndsWith(".myext2")) 
    { 
     MessageBox.Show("error."); 
     Application.Exit(); 
    } 
} 
else 
{ 
    MessageBox.Show("Select File."); 
    OpenFileDialog open = new OpenFileDialog(); 
    if (open.ShowDialog() == DialogResult.OK) 
     this.FilePath = open.FileName; 
    } 

В этом случае идёшь прямо к «другому» заявление, то есть, есть нет аргументов.

Как я уже говорил, этот код отлично работает в большинстве случаев, поэтому мой вопрос заключается в том, что может привести к тому, что этот компьютер, работающий под управлением Windows 7, не отправляет абсолютно никаких аргументов при открытии двойного щелчка?

+1

Как вы связали программу с расширением? –

+0

@ LasseV.Karlsen Я включил ассоциацию в проект installshield, который я создал для приложения, но я не думаю, что это проблема, потому что когда я открываю файл с указанным расширением, он открывает приложение, которое он должен открыть, но он не отправляет никаких аргументов. если я печатаю аргументы.length, он возвращает 0. – GeMaths

ответ

1

Возможно, это проблема прав пользователя. Вы должны попробовать создать ярлык для приложения и передать файл, который хотите открыть, в качестве первого аргумента. Щелкните правой кнопкой мыши ярлык и выберите «Запуск от имени администратора». Если это работает, то вы знаете, что это проблема прав. У вас может быть установка exe для запуска в качестве администратора. По умолчанию оболочка Windows не работает как администратор. Итак, если exe настроен на запуск как администратор, оболочке не будет разрешено передавать ему аргумент. Вам нужно будет щелкнуть правой кнопкой мыши exe и не запускать его как администратор, если вы хотите, чтобы оболочка могла передавать ему аргументы. Это случилось со мной раньше. Это всего лишь предложение. Я бы разместил его как комментарий, но я думал, что описание может быть слишком длинным для одного комментария.

+0

спасибо, но проблема не в запуске приложения. Приложение работает отлично. Проблема в том, что приложение должно запускаться при открытии файла с определенным расширением. Когда я делаю это на другом ПК (дважды щелкните файл с моим расширением), он открывает мое приложение и отправляет путь к указанному файлу в качестве аргумента (например, он должен делать), но я не могу сделать это на этом в частности. – GeMaths

+0

Я не знаю, что вы подразумеваете под «но я не могу сделать это на этой машине в частности». Проблема, которую я описываю, только предотвратит передачу аргумента. Это не препятствует запуску приложения. Итак, если тип файла связан с этим exe, он запустит его, но не сможет передать ему аргумент. Попробуйте создать ярлык. – Lorek

+0

Извините, я думаю, я не объяснил myselft правильно. Я понимаю, что ты сейчас говоришь. И это именно моя проблема, это не аргумент. Позвольте мне сделать это с помощью ярлыка, который вы описали. Заранее спасибо. – GeMaths

0

Посмотрите на этот thread

Я считаю, вы должны работать с повышенным FTYPE и ассоциативной команду на Windows 7 PC для того, чтобы сказать, что для отправки в качестве аргументов.

Смежные вопросы