Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Траблы с отключением компа / 10 сообщений из 10, страница 1 из 1
19.02.2007, 09:46
    #34340001
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
Здравствуйте, подскажите пожалуйта, программа выполняет копирование папки с одного компьютера на другой, а потом отключает комп:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub ShutDown()
Dim strComputer As String
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery( _
"Select * from Win32_OperatingSystem")
For Each ObjOperatingSystem In colOperatingSystems
ObjOperatingSystem.ShutDown Next
End Sub
пути "откуда-куда копировать" прописываются в реестре, иногда всё проходит нормально, а иногда компьютер не отключается, посмотрел в журнале событий там:

Реестр пользователя HOST\USER был сохранен в то время, как приложение или служба продолжали использовать его во время выхода из системы. Используемая реестром пользователя память не была освобождена. Реестр будет выгружен, когда он не будет использоваться.
Возможная причина - службы, выполняемые от имени пользователя. Попробуйте изменить настройку служб и задать их выполнение с учетными записями LocalService или NetworkService.

или

Реестр пользователя HOST\USER был сохранен в то время, как приложение или служба продолжали использовать его во время выхода из системы. Используемая реестром пользователя память не была освобождена. Реестр будет выгружен, когда он не будет использоваться.

Возможная причина - службы, выполняемые от имени пользователя. Попробуйте изменить настройку служб и задать их выполнение с учетными записями LocalService или NetworkService.

Это типа код проверки вся ля папка скопировалась
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub TimerOFF_Timer()
Dim fso As New FileSystemObject
path_out = getstring(HKEY_CURRENT_USER, "SOFTWARE\Base_copy", "path_out")
path_in = getstring(HKEY_CURRENT_USER, "SOFTWARE\Base_copy", "path_in")
out = fso.GetFolder(path_out).Size
dopstr = StrReverse(extractelementR(path_out,  2 , "\")) & "\"
If Len(dopstr) =  1  Then dopstr = ""
inn = fso.GetFolder(path_in & "\" & dopstr).Size
If out = inn Then
TimerOFF.Enabled = False
ShutDown
Else
Exit Sub
End If
End Sub
подскажите как быть
...
Рейтинг: 0 / 0
19.02.2007, 09:52
    #34340018
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
Возможно, это поможет .
...
Рейтинг: 0 / 0
19.02.2007, 12:20
    #34340535
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
После проверки реестра может быть поставить несколько DoEvents'ов или что-то вроде этого
или getstring эта что за функция из API? WMI? или...?
Попробуйте другими средствами делать запись-чтение реестра
...
Рейтинг: 0 / 0
19.02.2007, 12:40
    #34340596
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public Function getstring(Hkey As Long, strPath As String, strValue As String)
Dim keyhand As Long
Dim datatype As Long
Dim lResult As Long
Dim strBuf As String
Dim lDataBufSize As Long
Dim intZeroPos As Integer
r = RegOpenKey(Hkey, strPath, keyhand)
lResult = RegQueryValueEx(keyhand, strValue,  0 &, lValueType, ByVal  0 &, lDataBufSize)
If lValueType = REG_SZ Then
    strBuf = String(lDataBufSize, " ")
    lResult = RegQueryValueEx(keyhand, strValue,  0 &,  0 &, ByVal strBuf, lDataBufSize)
    If lResult = ERROR_SUCCESS Then
        intZeroPos = InStr(strBuf, Chr$( 0 ))
        If intZeroPos >  0  Then
            getstring = Left$(strBuf, intZeroPos -  1 )
        Else
            getstring = strBuf
        End If
    End If
End If
RegCloseKey keyhand
End Function
...
Рейтинг: 0 / 0
19.02.2007, 13:28
    #34340784
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
timtim
Код: plaintext
1.
RegCloseKey keyhand

Попробуйте после этой строки сделать паузу или DoEvents
...
Рейтинг: 0 / 0
19.02.2007, 13:40
    #34340835
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
ок, спасибо
...
Рейтинг: 0 / 0
20.02.2007, 06:27
    #34342666
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
Получилось?
...
Рейтинг: 0 / 0
20.02.2007, 09:07
    #34342792
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
Нет не получилось, заплатку поставил, DoEvents прописал везде, но результат тот же т.е. комп не отключился и в журнале событьй ничего нет.
Подскажите, пожалуйста, есть ли ещё какой либо способ отключения компьютера.
...
Рейтинг: 0 / 0
20.02.2007, 10:59
    #34343127
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
А доступ к реестру через WMI не пробовал?
...
Рейтинг: 0 / 0
20.02.2007, 12:51
    #34343577
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы с отключением компа
наверное проще всего будет сохранять настройки в ini файле
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Траблы с отключением компа / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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