powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка Command failed при попытке SaveAs
12 сообщений из 37, страница 2 из 2
Ошибка Command failed при попытке SaveAs
    #38854728
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини за задержку.

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

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

Код: vbnet
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.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
Sub Test_Write()
  ' константы открытия файлов для OpenTextFile
  Const OpenFileForReading = 1
  Const OpenFileForWriting = 2
  Const OpenFileForAppending = 8
  
  'константы типа файлов - ANSI/UNICODE для OpenTextFile
  Const ciANSIFILE = 0 ' ANSI
  Const ciUNICODE = 1  ' UNICODE
  Const ciSystemDefault = 2 ' по выбору системы
  
  'константы для логирования ошибок в журнале приложений Windows
  Const clogSUCCESS = 0
  Const clogERROR = 1
  Const clogWARNING = 2
  Const clogINFORMATION = 4
  Const clogAUDIT_SUCCESS = 8
  Const clogAUDIT_FAILURE = 16

  
  ' создаем объект filesystemobject
  Dim fso 'As FileSystemObject
  Set fso = CreateObject("Scripting.FileSystemObject")

  ' создаем объект shell для доступа к переменным окружения
  Dim oShell
  Set oShell = CreateObject("WScript.Shell")

  ' обработку ошибок начинаем только с этого места, так, чтобы получить при неудаче предыдущего просто Exception
  On Error Resume Next

  Dim vcFullFileName
  vcFullFileName = "C:\pdf\test_log.txt"

  Dim otxtFile ' As TextStream
  'это для проверки создания файла с перезаписью
  'Set otxtFile = fso.CreateTextFile("C:\pdf\test_log.txt", True, False)
  '
  '                                файл                 режим         создать, если нет, пишем в ANSI
  Set otxtFile = fso.OpenTextFile(vcFullFileName, ForAppending, True, ciANSIFILE)

  If Err.Number <> 0 Then
     oShell.LogEvent clogERROR, "fso.OpenTextFile : " & vcFullFileName & " : " & Err.Number & Err.Description
     ' т.к. даже не сумели получить доступ к файлу, завершаем работу
     Exit Sub
  End If

  'здесь оказались только при успешном доступе к файлу
  'эзапишем в него значения переменных окружения
  
  Dim arrEnvironments
  ' массив источников для переменных окружения
  arrEnvironments = Array("PROCESS", "SYSTEM", "USER", "VOLATILE")

  
  Dim oEnv ' объект для доступа к переменным окружения от разных источников
  Dim strEnv
  Dim strItem
  
  For Each strEnv In arrEnvironments
      Set oEnv = oShell.Environment(strEnv)
      If Err.Number <> 0 Then
       ' регистрируем ошибку в системном журнале
       oShell.LogEvent clogERROR, "oShell.Environment : " & strEnv & " : " & Err.Number & " " & Err.Description
       
       
      Else
        ' нет ошибки
        ' заголовок - источник переменных окружения
        otxtFile.WriteLine "+++++++ " & strEnv & " ++++++++++++++"
        If Err.Number <> 0 Then
          ' регистрируем ошибку в системном журнале
          oShell.LogEvent clogERROR, "otxtFile.WriteLine : " & strEnv & " : " & Err.Number & " " & Err.Description
        End If
         ' пишем содержимое
         For Each strItem In oEnv
           otxtFile.WriteLine strItem
           If Err.Number <> 0 Then
             ' регистрируем ошибку в системном журнале
            oShell.LogEvent clogERROR, "otxtFile.WriteLine : " & strItem & " : " & Err.Number & " " & Err.Description
           End If
         Next
      End If
       'закрываем раздел
       otxtFile.WriteLine "---------------------"
       
  Next
  
  'закрываем файл
  otxtFile.Close
  
End Sub




задача попробовать этот код поместить в модуль заранее созданного документа,
затем открыть этот документ через "сервисную автоматизацию" и выполнить эту процедуру через Application.Run
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854731
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

TODO:
поправить дефект: в ветках логирования ошибок внутри обоих циклов забыт Err.Clear
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854733
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

ну и, причесать прочие дефекты далее по вкусу...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854890
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока что громадное спасибо. Доеду до копа позже...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38854891
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
компа
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38855543
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не успелось...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38857906
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Есть вести с полей?
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38858862
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, пока нет. Бегаю по другим делам, из которых часть является более срочными делами на работе, а другая вообще с работой не связана. Но я к этой проблеме неминуемо вернусь, потому что сделать ее я все равно должен.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38860645
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Мое начальство, по случаю тоже говорящее по-русски, просило передать тебе коробку конфет. Пока что приаттачиваю какую могу, но можно и физическую коробку по физическому адресу. А проблема, как оказалось, была намного проще. Когда в ДиКоме я задавал юзера для обращений к Ворду, я не перезапустил сервер. После перезапуска всё затикало.

...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38860828
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

шпсб. я тут как раз на сидр с пива переквалифицировался, так что конфетки в точно в масть.

понял - т.е. - права не "схватились" на лету и затребовали перезапуска сервера (правильно я понимаю, что под "сервером" понимается твой прикладной сервис, над которым происходят танцы с бубнами? ).

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

Касательно перезапуска - получилось вот что - пока ты настраивал параметры права для пользователя/ворда с не остановленным сервисом, новые значения не были видны, т.к. "окружение" оказалось унаследованным процессом по состоянию на момент запуска. Это "стандартный случай", когда надо подрулить переменные окружения - новые значения не будут видны для уже запущенного процесса.

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

Но, скрипт, если не пускал, ты все равно пусти для любопытства.

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

Второе удаленно и без ясного плана сильно затруднительно. Поэтому была цель - сначала отсечь первое, а потом, не торопясь, изобретать план для подрыва второй темы.
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38861549
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby(правильно я понимаю, что под "сервером" понимается твой прикладной сервис, над которым происходят танцы с бубнами? )
Никак нет. Под сервером я понимаю компутер.

Остальное я прочитал, попробую осмыслить...
...
Рейтинг: 0 / 0
Ошибка Command failed при попытке SaveAs
    #38862139
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычНикак нет. Под сервером я понимаю компутер.

Хм... и ок. Может оказаться, что это "плохо воспроизводимая" тема - что-то здесь не так.
М.б. в части и вокруг локального применения доменных правовых назначений.
Каки-то есть детальки, приводящие к необъяснённому поведению...

P.S.
Конфетки все-равно сожрал - не взирая.
И аж чафкал, штоп коллегам не досталося.

Как это в песне поется - "Слава богу - есть у нас враги."
От того не просто надежда - целая вера рождается.
А за водкою я сегодня уже отсидел.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка Command failed при попытке SaveAs
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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