Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/48: Рейтинг темы: голосов - 48, средняя оценка - 4.54
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28

Авто нахождение пути к файлу

18.02.2010, 20:36. Показов 8860. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите плиз.
Как сделать так чтобы прога автоматически находила путь к файлу.
Например на моем компе файл который мне нужен лежит на F:\1c\база,а на другом компе этот файл лежит в другом месте.Знаю что это можно сделать с помощью Process.
Помогите плиз.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2010, 20:36
Ответы с готовыми решениями:

Нахождение пути к файлу при его переносе
Всем добрый день, скажите пжл, а то дотумкать не могу есть файл находится он в папке D:\OTDEL\file\DOC.txt как правильно использовать...

Скрипт копирования пути к файлу\папке и вставка пути в письмо Outlook
Всем доброго времени суток! Помогите, пож-та, разобраться\дописать скрипт. Есть скрипт на открытие\создание нового сообщения в Outlook....

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи типа : "Описать базовый класс...

26
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.02.2010, 23:32
Попробуй поискать свой файл с помощью Directory.GetFiles();
0
 Аватар для FreeWay
84 / 84 / 19
Регистрация: 17.12.2007
Сообщений: 574
19.02.2010, 09:04
Цитата Сообщение от nio Посмотреть сообщение
Попробуй поискать свой файл с помощью Directory.GetFiles();
это что же - тысячи каталогов перебирать? О_о

если искомый файл (программа) - то наверно зная имя процесса можно вычислить путь, в противном случае действительно поиск)))), либо немного ограничить расположение файла, например он может находиться на любом диске в корне, что то типа такого:
Любой Диск:/Уникальное название папки в которой мой файл/уникальное название файла

как то так
0
мну довольно <(-__-)l
 Аватар для gGrn-7DA
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
19.02.2010, 09:06
можно создать системную переменную пути к файлу. как реализовать не знаю пока...
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.02.2010, 09:24
Папку эзверь просто копирует как хочет и куда хочет?
0
Заблокирован
19.02.2010, 11:16
Цитата Сообщение от gGrn-7DA Посмотреть сообщение
можно создать системную переменную пути к файлу. как реализовать не знаю пока...
Путь к папке откуда запускается программа
C#
1
2
3
4
         // так
           string path = AppDomain.CurrentDomain.BaseDirectory;
       //или так
            string s = Application.StartupPath;
1
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 00:01  [ТС]
Только я этот путь не знаю на другом компе,знаю только на своем.
Пробовал через
Process.Start("F:\\1c\\база\\bin\\1cv8t. exe") но это только работает на моем компе соответственно
Process.Start("1cv8t.exe") думал что так он на другом компе будет искать exe-шник и запускать,но exe-шник даже через "выполнить" не грузит,пишет не найден.
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.02.2010, 00:24
Погодите, что за бред, зачем 1С-ину устанавливать в левый каталог,
Я делаю намного проще, стандартная установка и вкидываю файл ibases.v8l, как ярлык для запуска 1С.
Или зачем весь этот цирк?
0
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 12:20  [ТС]
Ну у меня нету этого файла,я так понял это файл информационной базы.Мне нужно тупо через мою прогу запускать 1с предприятие,где смогу выбирать какую базу загружать,создавать,удалять,кароче то самое главное окошечко которое запускается через 1cv8t.exe
А вдруг у пользователя это предприятие стоит в левом каталоге,мне надо чтобы прога сама искала путь до этого ехе-шника.
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.02.2010, 12:26
Code
1
А вдруг у пользователя это предприятие стоит в левом каталоге,мне надо чтобы прога сама искала путь до этого ехе-шника.
Как это, "а вдруг"??? это уже просто выдумки, вы сами себе ищете задачи, а если уж на то пошло, то вытягивайте путь к 1С-ине с реестра...
Мне нужно тупо через мою прогу запускать 1с предприятие,где смогу выбирать какую базу загружать,создавать,удалять,кароче то самое главное окошечко которое запускается через 1cv8t.exe
А смысл всего этого? для чего? Возможно решение проще чем вы думаете...
1
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 13:12  [ТС]
Я не знаю расположения предприятия у пользователя.
Возможно все гораздо легче не спорю.Я делаю книгу непосредственно из которой будет выход в среду разработки,в моём случае это 1с,чтобы по начатию кнопки он переходил в среду,и там делал поставленные задачи.
Можете ли привести пример кода для доступа к предприятию на машине пользователя, если моя книга будет запускаться на 100 машинах и у каждого будет предприятие находится в разных каталогах.
На своем компьютере я знаю путь по тому проблем у меня нету,а как сделать чтобы и у пользователя запускалось?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
20.02.2010, 13:22
Цитата Сообщение от POGONEZ Посмотреть сообщение
а как сделать чтобы и у пользователя запускалось?
Думаю или делат ьперебор каталогов, или действительно попробовать вытянуть путь из регистра (если там такие записи создаются)

Добавлено через 1 минуту
Есть еще вариант - попробовать поискать ярлык на рабочем столе или в меню "Пуск" - ведь пользователь почти всегда их туда добавляет
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.02.2010, 13:27
1. Если вам нужен путь к расположению 1С - возьмите данные из реестра
C#
1
string appPatch = (string)Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\bla bla", "какой-то ключ", null);
полностью не скажу где, так как сейчас нету 1Сины
2. Если надо список баз возьмите из каталога пользователя
Code
1
c:\Documents and Settings\%username%\Application Data\1C\1Cv81\ibases.v8i
0
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 14:10  [ТС]
string appPatch = (string)Microsoft.Win32.Registry.GetValu e(@"HKEY_CURRENT_USER\Software\bla bla", "какой-то ключ", null);

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

Под название какой-то "ключ" вы имели ввиду Тип?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
20.02.2010, 14:20
вы что-то такое говорите, что просто ни в какие рамки не лезет, с таким самим успехом,
пользователь может переименовать саму 1Сину назовет ее abracadabra.exe

А ветку я для примера указал, возьмите к примеру от суда
C#
1
2
3
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\1cv8.exe\shell\Open\command]
//или от сюда
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\V81.InfoBaseListLink\shell\Open\command]
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
20.02.2010, 14:32
POGONEZ, а может проще при начале сеанса работы (или при первом запуске) потребовать у пользователя выбрать экземпляр 1С с которым предстоит работать (через OpenDialog с фильтром например)
0
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 14:35  [ТС]
"какой-то ключ"
Сюда что нужно вводить?

Добавлено через 2 минуты
Цитата Сообщение от Alligieri Посмотреть сообщение
а может проще при начале сеанса работы (или при первом запуске) потребовать у пользователя выбрать экземпляр 1С с которым предстоит работать (через OpenDialog с фильтром например
Спасибо за идею,можно попробовать и так,но я сначало хочу попробовать разобраться с открытие по записи реестра.
0
Заблокирован
20.02.2010, 15:00
Я думаю, если надо запустить файл, который лежит не известно где - придется (как мне кажется) в любом случае воспользоваться поиском. Хотя это и не очень практично, зато всегда сработает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
String[] LogicalDrives = Environment.GetLogicalDrives();
            foreach (string LD in LogicalDrives)
            {
                try
                {
                    System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(LD);
                    if (directoryInfo.Exists)
                    {
                        // ищем в корневом каталоге
 
                        System.IO.FileInfo[] fileInfos = directoryInfo.GetFiles("*.exe", System.IO.SearchOption.TopDirectoryOnly);
                        foreach (System.IO.FileInfo fi in fileInfos)
                        {
                          
                            if(fi.Name == "1cv8.exe")
                            {
                                    System.Diagnostics.Process p = new System.Diagnostics.Process(); 
                                p.StartInfo.FileName = fi.FullName;
                                p.Start(); break;
                            }
                        }
                    }
                }
                catch { }
 
                try
                {
                    System.IO.DirectoryInfo directoryInfo = new System.IO.DirectoryInfo(LD);
                    if (directoryInfo.Exists)
                    {
                        System.IO.DirectoryInfo[] Dir = directoryInfo.GetDirectories();
                        foreach (System.IO.DirectoryInfo dir in Dir)
                        {
                            try
                            {
                                // ищем во всех папках
                                System.IO.FileInfo[] fileInfos = dir.GetFiles("*.exe", System.IO.SearchOption.AllDirectories);
                                foreach (System.IO.FileInfo fi in fileInfos)
                                {
 
                                    if (fi.Name == "1cv8.exe")
                                    {
                                        System.Diagnostics.Process p = new System.Diagnostics.Process();
                                        p.StartInfo.FileName = fi.FullName;
                                        p.Start(); break;
                                    }
 
                                }
                            }
                            catch { }
 
                        }
                    }
                }
                catch { }
            }
1
 Аватар для POGONEZ
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 28
20.02.2010, 15:59  [ТС]
Признателен за код.
В общем,комп очень долго думал видимо искал этот ехе-шник я уж подумал что завис,не нашел.
Я так понимаю если я захочу ограничить область поиска мне надо изменять эту строчку?

Цитата Сообщение от ssv_www Посмотреть сообщение
System.IO.FileInfo[] fileInfos = dir.GetFiles("*.exe", System.IO.SearchOption.AllDirectories);
Добавлено через 32 минуты
Я понял почему по этому коду не запускается,потомучто тут написано найти и запустить ехе-шник,а он даже с помощью "выполнить" не запускается.
Надо чтобы программа находила путь к данному ехе-шнику,и через путь его запускала,или сделать так чтобы открывалась эта папка где он лежит и пользователь уже запускал сам ехе-шник.
Помогите народ.
0
Заблокирован
20.02.2010, 20:24
Цитата Сообщение от POGONEZ Посмотреть сообщение
В общем,комп очень долго думал видимо искал этот ехе-шник я уж подумал что завис,не нашел.
Да, не спорю, времени уходит много, что бы просмотреть все папки. Но какой то странный у тебя ехе-шник. Я у себя для проверки засунул файл далеко как только мог и программа нашла его и запустила.
Установи побольше точек останова и проследи работу программы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2010, 20:24
Помогаю со студенческими работами здесь

Кодировка в пути к файлу
Все доброго времени суток. Нужно в StringList прогрузить файл указанный через OpenDialog1. ...

Пути к текстовому файлу
Новичек, пытаюсь просто открыть файл: text_file = open(&quot;t.txt&quot;, &quot;r&quot;) Но он пишет что t.txt не существует, хоть он там есть, рядом с самим...

Задание пути к файлу
Приветствую... Подскажите такой вопрос. У меня из-под экселя открывается определенный файл вордовский. К нему я прописываю путь. Все...

Пробелы в пути к файлу
Доброго времени суток. Простой вопрос, понимаю..раньше заключал пути в кавычки, но сейчас, почему-то, не срабатывает. Код: std::string...

Переменная в пути к файлу
Есть код, точнее отрывок: char name; unsigned long size; GetUserName(name,&amp;size); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru