24. oktober 2003 - 04:50Der er
6 kommentarer og 1 løsning
Start af bat file i VB.net service
Jeg sidder og programmerer et program som en Windows service i vb.net, under test (dvs. ikke som et service program) virkede alt fint! De der skal ske er at mit program skal eksekverer en bat fil, (som starter et program der generere en fil mm.) men når jeg kører services sker der ikke en **** efter nogle test fandt jeg ud af hvis jeg henter output fra den process jeg starter, så er output stien til bat filen, jeg kan ikke lige finde ud af hvad der foregår!
Koden: Dim p As New Process
With p.StartInfo .UseShellExecute = True .FileName = "C:\sa\sa.bat" .WorkingDirectory = "" .Arguments = "" .RedirectStandardOutput = False End With
' Execute the process If p.Start() Then myDebug.WriteLine(" Started") p.WaitForExit() 'Dim outfile2 As New System.IO.StreamWriter("C:\OUTPUT.TXT", False) 'p.WaitForExit() 'outfile2.Write(p.StandardOutput.ReadToEnd) 'outfile2.Close()
Dim infile As New System.IO.StreamReader("C:\sa\Tmp\Report.txt") data = infile.ReadToEnd() infile.Close() End If
Jeg har lavet noget lignende og fået det til at fungerer, så det kan lade sig gøre ;). Det som drillede mig var at rettighederne jo skifter da en service som standart kører som "localadmin" og ikke som dig. En anden ting som kan drille er at applikations stigen skifter fra den mappe som programmet ligger til system32 mappen.
Håder jeg har givet det nogle ledetråde til hvad dit problem er.
Jeg har nu prøvet at ændre så servicen kører som ,ig, og så virker det faktisk, nogen idéer til hvordan jeg gør så det kan køre som en normal service (dvs. som SYSTEM) det er ikke en holdbar løsning at køre som mig (med admin rettigheder)
Dit script gør noget som localadmin ikke har lov til, så som at eksekverer filer i en given mappe eller tilgå recourser på netværket eller internettet. (Det virker underligt, men localadmin har ikke lov til alt). Der er to måder at omgå dette. Du kan enten ændre localadmin rettighederne eller (Hvad der nok er bedst) oprette en ny bruger der har de rette rettigheder og kører som denne. Den bedste måde at tracke problemerne på er at lave en ny bruger med så få rettigheder som muligt. Dernæst kører du programmet som brugeren, tracke fejlene og give modsvarende rettigheder, indtil programmet fungerer.
Godt så, det med at give localadmin rettigheder lyder som en god ide, men hvordan gør jeg det? I oversigten over brugere hvor iisguest og alle de andre er kan jeg ikke se localadmin, hvordan giver jeg den så rettigheder?
Sorry jeg ikke lige har vendt tilbage, men jeg har haft lidt (Læs meget) travlt.
Du burde stadig overveje at kører servicen som en anden bruger da der er mange andre ting der benytter localadmin. Du piller reelt ved nogle ret centrale dele af systemet når du rør ved localadmin og du risikerer at åbne op for en del sikkerheds problemer.
Med hensyn til hvordan du gør så varierer det utroligt meget fra system til system, og det er et helt kapittel for sig. Desværre er det et kapittel jeg ikke kender særligt godt, så jeg kan ikke hjælpe dig ret meget mere end at sige at på min xp ligger brugerstyringen under 'kontrolpanel' -> 'administration' -> 'lokal sikkerhedspolitik'
Oswald
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.