Что нового

Скрипт от имени "СИСТЕМА" перестает работать

lastangel

Новичок
Сообщения
39
Репутация
0
Когда запускается с помощью планировщика задач (от имени "Система") или SrvAny, то скрип просто висит и ничего не делает, чем это может быть обусловлено?
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
А что он делать должен?
 

firex

AutoIT Гуру
Сообщения
943
Репутация
206
Re: Скрипт от имени \"СИСТЕМА\" перестает работать

lastangel [?]
Когда запускается с помощью планировщика задач (от имени "Система") или SrvAny, то скрип просто висит и ничего не делает, чем это может быть обусловлено?
Почитайте о "Интерактивности".


Добавлено:
Сообщение автоматически объединено:

Вот так можно запустить от имени системы интерактивно, хотя, если это можно так назвать.
Код:
#RequireAdmin

Func _FxLib_Process_RunAsSystem($__Executable, $__Interactive = 0)
   Local $hFile, $sPath = @TempDir & '\FxL_RaS.bat', $sBat = '0x' & _
   '406563686F206F66660D0A736574206D3D2574696D653A7E332C32250D0A73657420683D2574696D653A7E302C32250D0A73657420643D25646174653'& _
   'A7E302C3225200D0A736574206D3D25646174653A7E332C3225200D0A73657420793D25646174653A7E382C32250D0A696620256D3A7E302C31252065'& _
   '7175203020736574206D3D256D3A7E312C31250D0A69662025683A7E302C31252065717520302073657420683D25683A7E312C31250D0A736574202F6'& _
   '1206D2B3D310D0A696620256D252065717520363020736574206D3D3020262620736574202F6120682B3D310D0A696620256825206571752032342073'& _
   '657420683D300D0A7363687461736B73202F637265617465202F746E202246784C5F53797341707022202F7472202531202F7363206F6E6365202F737'& _
   '4202568253A256D253A3030202F7364202564252F256D252F257925202F7275202253797374656D220D0A7363687461736B73202F72756E202F69202F'& _
   '746E202246784C5F537973417070220D0A7363687461736B73202F64656C657465202F746E202246784C5F53797341707022', $sBatI = '0x'& _
   '406563686F206F66660D0A7363206372656174652046784C5F5379734170702062696E706174683D20253120747970653D206F776E207479706'& _
   '53D20696E7465726163740D0A6E65742073746172742046784C5F5379734170700D0A73632064656C6574652046784C5F537973417070'

   $sBat = Binary($sBat)
   If $__Interactive Then _
	  $sBat = Binary($sBatI)

   $hFile = FileOpen($sPath,18)
   FileWrite($hFile, $sBat)
   FileClose($hFile)

   Return SetError( RunWait($sPath & ' ' & $__Executable, '', @SW_HIDE), 0, 0 )
EndFunc
 
Автор
L

lastangel

Новичок
Сообщения
39
Репутация
0
А что он делать должен?
К примеру такие функции как эти не работаю:
1.
Код:
Func _Screenshot($path_screen)

	;~ 	ConsoleWrite($MakeScreen & "   ")

	If _Timer_GetIdleTime() > 15000  Then Return
	If _IsFullScreen() > 0 Then Return

    Local $s_Dir = $path_screen & '\', $s_FileName, $f_Cursor = True

    If Not FileExists($s_Dir) Then DirCreate($s_Dir)
    $s_FileName = StringFormat('%s_%s_%s [%s_%s].jpg', @HOUR, @MIN, @SEC, @MDAY, @MON)
    ConsoleWrite($s_FileName & @LF)
	_ScreenCapture_SetJPGQuality(75)
    _ScreenCapture_Capture($s_Dir & $s_FileName, 0, 0, @DesktopWidth, @DesktopHeight, $f_Cursor)

EndFunc   ;==>_Screen

Func _IsFullScreen()

    Local $hWnd = DllCall('user32.dll', 'hwnd', 'GetForegroundWindow')

    If (@error) Or ($hWnd[0] = 0) Then
        Return SetError(1, 0, 0)
    EndIf

    If (StringInStr(WinGetClassList($hWnd[0]), 'SHELLDLL_DefView') = 0) And (BitAND(WinGetState($hWnd[0]), 2) = 2) And (_WinAPI_GetClientWidth($hWnd[0]) = @DesktopWidth) And (_WinAPI_GetClientHeight($hWnd[0]) = @DesktopHeight) Then
        Return 1
    EndIf

EndFunc

2.
Код:
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
;~          ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 then $IPPort = 25
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
А подобное выполняется от имени других пользователей?
 
Автор
L

lastangel

Новичок
Сообщения
39
Репутация
0
Да, выполняется, если запускаю от имени пользователя
 

firex

AutoIT Гуру
Сообщения
943
Репутация
206
lastangel
Я же тебе ясно сказал что читать.

Когда ты запускаешь от имени системы - это идет подобие виртуалки.
Система может контактировать с пользователями, а пользователи системой - нет.
Одностороннее чтение. Когда ты переходишь в систему, пользователи частично замораживаются, а когда ты в пользователях - система работает.

Код:
_FxLib_Process_RunAsSystem('"c:\windows\system32\cmd.exe /k start"', 1)

Сделай вот так и сам все поймешь.
 
Автор
L

lastangel

Новичок
Сообщения
39
Репутация
0
firex
Ну я запускаю, ничего не происходит...
То есть, если идет запуск от Системы, то половина функционала не работает?
 
Верх