Я пытаюсь написать программу для передачи строки, которая является именем файла. Затем я хочу, чтобы программа запускала/открывала файл, который я передавал в качестве параметра.Выполнить файл с длинным пути к файлу
Я сделал некоторые исследования, и я уверен, что я должен использовать что-то вроде этого: Link
Но я нашел только примеры, чтобы открыть (чтобы wirte) файлы, удалять и найти файлы. MS Library
У меня возникли проблемы с адаптацией кода.
Может ли кто-нибудь мне помочь? Вот что я придумал:
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.ComponentModel;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
namespace ConsoleApplication1
{
class Program
{
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern bool abreFicheiro(string lpFileName, bool bFailIfExists);
static void Main(string[] args) {
string caminho = fixPathForLong(@args[0]);
abreFicheiro(caminho);
}
public static bool abreFicheiro(string caminho) {
Process.Start(caminho);
if (!abreFicheiro(caminho, false))
{
throw new Win32Exception();
}
return true;
}
private static string fixPathForLong(String path)
{
if (!path.StartsWith(@"\\?\"))
path = @"\\?\" + path;
return path;
}
}
}
EDIT: Там, кажется, некоторая путаница относительно того, что я wan't, поэтому я постараюсь прояснить.
У меня есть приложение FoxPro, в котором у меня есть записи. Для некоторых из этих записей я хочу связать изображение или документ, поэтому я храню его путь в поле в базе данных. Пока, так хорошо. Проблема заключается в том, что файлы восходят к нескольким ТБ (это правильно Tera Bytes), а пути более длинны, чем максимально допустимые API-интерфейсами Windows.
Я хочу открыть эти файлы непосредственно у Fox, но Fox не поддерживает длинные пути. Итак, я хочу написать приложение на C#, чтобы передать длинное имя файла в качестве параметра и открыть его этим приложением ...
Проблема в том, что C# также наследует ограничение Windows API. Я столкнулся с обходным путем для удаления, перемещения и открытия (в режиме редактирования) файлов с такими длинными дорожками. Но я хочу только, чтобы окна открывали файл и показывали его пользователю.
Надеюсь, я сделал себя ясным. Извините за плохой английский.
Put C# в качестве метки на ваш вопрос, пожалуйста, – m0skit0
сделано. спасибо за напоминание. – user1206709
Непонятно, что вы хотите спросить. Если вы хотите уменьшить длинный путь, вы можете использовать API GetShortPathName http://pinvoke.net/default.aspx/kernel32/GetShortPathName.html – Mohit