Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как определить путь к каталогу Temp / 25 сообщений из 26, страница 1 из 2
22.10.2015, 11:14
    #39083200
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Мне надо производить действия с файлами: заархивировать/разархивировать скопировать базу, сжать её и так далее.
Для этого я использовал папку c:\Documents and Settings\username\Local Settings\Temp\
Я находил путь к папке при помощи класса clsCpecialFolder (см приложение). Но там не было пути к папке Temp, а был путь к C:\Documents and Settings\username\Local Settings\Application Data Я получал этот пут, удалял последний кусочек и подставлял Temp. На ХР всё работало нормально. Но недавно поставили Seven (семёрку) , а там совершенно иные пути к служебным папкам. Как вычислить путь к Temp в не зависимости от версии операционки?


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
22.10.2015, 11:22
    #39083208
Agapov_stas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Joss, не оно?
Код: vbnet
1.
2.
3.
4.
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
get_TempFolder = fso.GetSpecialFolder(2)
Set fso = Nothing
...
Рейтинг: 0 / 0
22.10.2015, 11:25
    #39083212
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Joss,

?environ("Temp")
C:\DOCUME~1\Admin\LOCALS~1\Temp
chdir("C:\DOCUME~1\Admin\LOCALS~1\Temp")
?curdir
C:\DOCUME~1\Admin\LOCALS~1\Temp
...
Рейтинг: 0 / 0
22.10.2015, 11:42
    #39083244
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Agapov_stas , а нафига лишние телодвижения?
Код: vbnet
1.
get_TempFolder = CreateObject("Scripting.FileSystemObject").GetSpecialFolder(2)



Правда, и тут есть засада - метод, не размышляя, просто берёт значение сеансовой переменной %TEMP%. В которую в общем пользователь имеет право запихать всё, что ему заблагорассудится, в том числе и голимый фэйк.

Надёжнее использовать API-функции, как собсно это рекомендует MSDN:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
      Private Declare Function GetTempPath Lib "kernel32" _
         Alias "GetTempPathA" (ByVal nBufferLength As Long, _
         ByVal lpBuffer As String) As Long

      Private Declare Function GetTempFileName Lib "kernel32" _
         Alias "GetTempFileNameA" (ByVal lpszPath As String, _
         ByVal lpPrefixString As String, ByVal wUnique As Long, _
         ByVal lpTempFileName As String) As Long

      Private Function CreateTempFile(sPrefix As String) As String
         Dim sTmpPath As String * 512
         Dim sTmpName As String * 576
         Dim nRet As Long

         nRet = GetTempPath(512, sTmpPath)
         If (nRet > 0 And nRet < 512) Then
            nRet = GetTempFileName(sTmpPath, sPrefix, 0, sTmpName)
            If nRet <> 0 Then
               CreateTempFile = Left$(sTmpName, _
                  InStr(sTmpName, vbNullChar) - 1)
            End If
         End If
      End Function
...
Рейтинг: 0 / 0
22.10.2015, 11:51
    #39083259
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Спасибо. Сейчас посмотрю. А то что-то зациклился на этом классе.
...
Рейтинг: 0 / 0
22.10.2015, 12:42
    #39083376
Agapov_stas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Akina Agapov_stas , а нафига лишние телодвижения?
А кто их делал? Я лишь написал вариант. Никаких лишних движений.
А только хотел написать за environ("Temp"), увидел, что уже написали.
...
Рейтинг: 0 / 0
22.10.2015, 12:59
    #39083408
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Agapov_stas , не, я просто к тому, что объектная переменная, которая создаётся, пользуется и тут же давиться, лишняя. Вот кабы она где ещё потребовалась...
...
Рейтинг: 0 / 0
22.10.2015, 21:34
    #39084131
Александр Маркин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Joss,

?Environ("LocalAppData") & "\Temp"
C:\Users\Master 307\AppData\Local\Temp
-----------------------------------------

На Windows XP,
раньше показывало такой путь,
туда была распаковка.

?Environ("LocalAppData") & "\Temp"
C:\Documents and Settings\username\Local Settings\Temp

Сейчас,
наверное после какого-то обновления,

При распаковки файлов создаётся папка Temp на диске С и
показывает такой путь без диска, хотя этот путь
C:\Documents and Settings\username\Local Settings\Temp
тоже существует.

?Environ("LocalAppData") & "\Temp"
\Temp
...
Рейтинг: 0 / 0
22.10.2015, 22:19
    #39084164
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
JossМне надо производить действия с файлами: заархивировать/разархивировать скопировать базу, сжать её и так далее.
Для этого я использовал папку c:\Documents and Settings\username\Local Settings\Temp\
Я находил путь к папке при помощи класса clsCpecialFolder (см приложение). Но там не было пути к папке Temp, а был путь к C:\Documents and Settings\username\Local Settings\Application Data Я получал этот пут, удалял последний кусочек и подставлял Temp. На ХР всё работало нормально. Но недавно поставили Seven (семёрку) , а там совершенно иные пути к служебным папкам. Как вычислить путь к Temp в не зависимости от версии операционки?


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

Не, я валяюсь... БГ спецом создал переменные окружения, чтобы отвязаться от абсолютных путей. Ты же вдохновенно реверсинжиниришь его :) Чем теяб не устраивают %TEMP% и %TMP%?
.
...
Рейтинг: 0 / 0
23.10.2015, 09:07
    #39084285
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Mina Anna MazziniЧем теяб не устраивают %TEMP% и %TMP%?
А тем, что
AkinaВ которую в общем пользователь имеет право запихать всё, что ему заблагорассудится, в том числе и голимый фэйк.
Понятно, что, как правило, он этого не станет делать, ибо ему немедленно аукнется.
А ещё хочу напомнить, что переменные эти на самом деле пережиток далёкого прошлого. Пусть и добросовестно пока поддерживаемый. Сейчас сама ОС в своей работе ориентируется на совсем из другого места взятые данные - и правильнее делать так же.
...
Рейтинг: 0 / 0
23.10.2015, 09:13
    #39084292
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Joss,

И чё вам дался каталог Temp.
Чё других чёли нету ?
...
Рейтинг: 0 / 0
23.10.2015, 09:29
    #39084312
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
ROI , постарайтесь читать не только сабж, но и тред.
ТСу нужен не Temp, а каталог, куда он может безопасно поместить временный файл и не бояться проблем с интерференцией, отсутствием прав и прочей отравляющей жизнь ерундой.
...
Рейтинг: 0 / 0
23.10.2015, 09:54
    #39084347
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Akina ROI , постарайтесь читать не только сабж, но и тред.
ТСу нужен не Temp, а каталог, куда он может безопасно поместить временный файл и не бояться проблем с интерференцией, отсутствием прав и прочей отравляющей жизнь ерундой.
Я то читаю.
Если контупер в домене -то (у ТС будет отсутствие прав и прочей отравляющей жизнь ерунды )
>> а каталог, куда он может безопасно поместить временный файл и не бояться проблем с интерференцией.
Это чё "интерференцией" (а по русски)?
...
Рейтинг: 0 / 0
23.10.2015, 09:59
    #39084351
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
[quote ROI]Joss,

К стати в Win 10 путь такой:
C:\Users\username\AppData\Local\Temp
...
Рейтинг: 0 / 0
23.10.2015, 10:22
    #39084378
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
ROIЭто чё "интерференцией" (а по русски)?
По-русски это "пересечение, взаимное влияние". Т.е. применительно к данному случаю - потенциальное пересечение по ресурсу с другим процессом, возможно, другой копией того же процесса.
...
Рейтинг: 0 / 0
23.10.2015, 11:34
    #39084460
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
AkinaТСу нужен не Temp, а каталог, куда он может безопасно поместить временный файл и не бояться проблем с интерференцией, отсутствием прав и прочей отравляющей жизнь ерундой.
Классика. ТС пишет одно, не заморачиваясь формулировками и правильным пониманием его формулировок однополчанами, а мы облагораживаем его хотелки :) Акина, очередной респект.

Итак, в этом, уточненном контексте:

AkinaMina Anna MazziniЧем теяб не устраивают %TEMP% и %TMP%?
А тем, что
AkinaВ которую в общем пользователь имеет право запихать всё, что ему заблагорассудится, в том числе и голимый фэйк.
Понятно, что, как правило, он этого не станет делать, ибо ему немедленно аукнется.
А ещё хочу напомнить, что переменные эти на самом деле пережиток далёкого прошлого. Пусть и добросовестно пока поддерживаемый. ...

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

Akina... Сейчас сама ОС в своей работе ориентируется на совсем из другого места взятые данные - и правильнее делать так же.
Тут у меня пробел в знаниях - живу в прошлом веке. Если в пару слов впишешься - обскажи, плз, - что за другие места? Где опасность интерференции (ROI, прости) с TEMP?

А если говорить про интерференцию (ROI, прости еще раз), то она межрофильная идеологически, организационно невозможна. А внутрипрофильная... так, это надо выдумать задачу (или их набор), которая внутри профиля асинхронно валит в одну и ту же папку и в один и тот же файл... Да и в этом случае все разруливается через GUID, а бескнофликтность на уровне приложений - через транзакции...

Чегой-то я недопонимаю, млин...
.
...
Рейтинг: 0 / 0
23.10.2015, 11:59
    #39084498
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Mina Anna MazziniЕсли в пару слов впишешься - обскажи, плз, - что за другие места? Где опасность интерференции (ROI, прости) с TEMP?
Windows использует достаточно много разных Temporary Folders. В профиле текущего пользователя, в общем профиле, в системном каталоге. Да и в каждом из этих мест их не по одному. Право слово, вот не заморачивался, где каждый из них прописан и в каких случаях используется.
Насчёт опасности... представь, что ты хардкодишь имя временного файла. Теперь представь, что по ошибке запускаешь две копии приложения. И они начинают мордобой за право первой ночи на один и тот же файл. Со скорее всего фатальными последствиями для обеих копий, а то и для данных. Это самый простой сценарий, хотя, увы, достаточно жизненный, особенно в условиях ускоренного программирования.
К слову, где-то когда-то читал, причём именно в MSDN или аналогичном месте, забавную ремарку о том, что любая программа должна учитывать, что в любой момент любой контент каталога %Temp% имеет право быть удалён, посему любой помещаемый туда файл рекомендовалось открывать в блокирующем режиме. Но это так, к слову... просто я запомнил, что есть "ненадёжные" места, и это надо учитывать.
Конечно, любые конфликты и накладки разруливаются, кто спорит. Но разумнее исключить их заранее, или по крайней мере понизить вероятность их возникновения.
...
Рейтинг: 0 / 0
23.10.2015, 12:26
    #39084549
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Akina, снкс.

Значит мой пробел не такой уж и пробел :)
Просто я твое "места" прочел как "механизмы" вот и озадачился. А про места, и что они расплодились - я фкурсах.

Но и в этом контексте, я бы не рекомендовал ТС-у далеко отходить от спущенной сверху модели профилей и привязанных к ним через переменные окружения физических папок.

Себе я позволяю лишь такую вольность - перенос папок с системного диска (из профиля) на другой логический (а желательно и физический) диск. При логине (дополнительно к встроенным механизмам венды) проверяется их наличие и создание по нужде.

Ну, а с учетом упомянутой ремарки... остается формировать (расширять текущее) собственное окружение для конкретного сеанса конкретного приложения.

Проблемы ТС - именно из-за харкода, который ты упомянул. Из-за тех самых гвоздей, за которые я рублюсь с оппонентами уже не первый раз :) 18314681
.
...
Рейтинг: 0 / 0
23.10.2015, 15:04
    #39084913
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Случайно зашел. Сколько всего написано. Небольшое пояснение. Просто пример для чего мне это понадобилось.
Разделённая база данных. Надо сделать копию базы с таблицами для архива и перед этим сжать. Для сжатия мне нужен каталог, который есть на любой машине и у любого пользователя. Я прикинул, что лучше всего подойдёт для этого каталог Temp из профиля пользователя. Но забыл, как определить путь к нему. Спасибо за помощь. Сделал, работает.
...
Рейтинг: 0 / 0
23.10.2015, 16:36
    #39085103
Вакшуль Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
ROIЭто чё "интерференцией" (а по русски)?
interference слово производное от interfere
http://dictionary.cambridge.org/dictionary/english/interfere

Вмешиваться(в чужие дела). Мой пост и есть interference. Как правило негативный подтекст.
Влияние извне.
...
Рейтинг: 0 / 0
23.10.2015, 16:45
    #39085119
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
[quot ROI]ROIJoss,

К стати в Win 10 путь такой:
C:\Users\username\AppData\Local\TempВ Windows 7 такой же
...
Рейтинг: 0 / 0
23.10.2015, 16:59
    #39085153
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
ROI...Это чё "интерференцией" (а по русски)?В школе на физике проходили. Когда про волны было.
Разве нет?
...
Рейтинг: 0 / 0
23.10.2015, 17:20
    #39085187
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
JossНадо сделать копию базы с таблицами для архива и перед этим сжать.
Сжать надо именно оригинал? или достаточно только получения сжатой копии? Во втором случае ты можешь влоб делать DBEngine.CompactDatabase в нужное место...
...
Рейтинг: 0 / 0
24.10.2015, 00:12
    #39085422
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Заметки на полях...

Сжимать ли базы перед бэкапом?

Мыть ли руки Выключать ли свет перед едой близостью?

В одном столичном городе жили два приятеля. Один - фотограф, второй - женских дел мастер. Хенеголох, фсмысле. Фотограф постоянно приставал к дохтуру:
- Какая у тебя славная работа! Мне б хоть денек за тебя потрудиться - сколько бы я идей с натуры для своего творчества почерпнул!
Приставал-приставал и однажды, будучи изрядно в подпитии, дохтур согласился:
- Да достал ты! В чем проблема? Бери мой халат и веди с утра прием.
Сказано - сделано. И вот, первая пациентка:
- Что тревожит, сударыня?
- Понимаете, доктор, я - белая, муж мой - белый, а ребенок родился - арап. Черный, как смоль. А я, под образами клянусь, мужу верна, с девичества, коего он меня и лишил же, подлец. Вот те крест истинный.
- М-да... тяжелый случай. Пройдите на кресло. Там же, за ширмой, и разденетесь.
И крутил он, и вертел ее на кресле - как глобус в третьем классе церковно-приходской. Насмотрелся - вдоволь :)
- Нет, сударыня, никаких паталогий я по моей линии не вижу. Может вы расскажете - как все это произошло?
- Как роды были?
- Да нет. Я про зачатие.
- Да как... как обычно. Муж вернулся со службы, я накрыла настолл, подала ужин. Пока он читал газеты и поливал цветы в палисаднике, я убрала со стола и, помыв посуду, отправилась в спальню. Умаявшись, выключила свет и сразу было заснула, как приперся мой благоверный. С интересом своим пакостным. Вот и произошло, что произошло. Отпыхтевшись, он встал покурить, включил свет...
- Стоп, стоп, стоп! - в неожиданном восторге перебивает ее наш новообращенный акушер-фотограф - Вот тут-то вы его и засветили!!!

Вот и вопрос в этом контексте - стоит ли сжимать ли базы перед бэкапом? Сжимать - в смысле механизмами Акса. Есно, имеем ввиду среднестатистическую базу, без крайних случев массового и регулярного удаления записей. Архиваторы прекрасно их жмут. Разницы почти нет - компактили бызу перед архивированием или нет. Пусть она будет в бэкапе чуть потолше, но живая.

Так мыть ли руки перед едой?.. чтобы не засветить... не нарваться в итоге на черненького...
.
...
Рейтинг: 0 / 0
24.10.2015, 10:51
    #39085482
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить путь к каталогу Temp
Mina Anna Mazzini,

Много рассуждений. Всё проверяется практикой. До сжатия база 13 Мб, после 1,7 Мб. Архив не сжатой базы 400 Кб, сжатой - 277 Кб.
Это я о размерах.

Сбои при сжатии средствами Access. Да был у меня такой случай. Лет 12 назад. Но это значит что база уже повреждена и надо предпринимать меры к её восстановлению. При неудачном сжатии, подпрограмма, где это происходит завершается по ошибке. Кроме того в настройках самой программы стоит флажок "Делать бэкап со сжатием или без". А так же, архивировать его потом архиватором или не надо. Разработчик (то есть я ) предусмотрел такие возможности, а уж дело пользователя ими пользоваться или нет.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как определить путь к каталогу Temp / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]