Avatar billede spif2001 Nybegynder
20. december 2005 - 10:41 Der er 13 kommentarer og
2 løsninger

Fyre en command line af fra C#

Sidder og bakser med at få et button event til at fyre en kommando af i en kommando prompt.

Jeg skal registrere en dll som service via RegSvcs. Derfor skal denne linie fyres af i en kommando prompt:

C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe /fc C:\MyService.dll

Hvordan gøres dette?

Eller er der en hel anden måde at registrere en service på fra c# kode. (Skal senere bruges i et AfterInstall event i et Setup project).
Avatar billede arne_v Ekspert
20. december 2005 - 10:44 #1
prøv:

Process.Start(@"C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe", "/fc C:\MyService.dll");
Avatar billede arne_v Ekspert
20. december 2005 - 10:45 #2
using System.Diagnostics;
Avatar billede arne_v Ekspert
20. december 2005 - 10:45 #3
hov jeg fik ikke sat @ på andet arg - det skal der naturligvis være
Avatar billede dr_chaos Nybegynder
20. december 2005 - 10:48 #4
du kan bruge noget i denne stil:

//Declare and instantiate a new process component.
    System.Diagnostics.Process process1;
    process1= new System.Diagnostics.Process();

    //Do not receive an event when the process exits.
    process1.EnableRaisingEvents = false;


    //The "/C" Tells Windows to Run The Command then Terminate
    string strCmdLine;
    strCmdLine = "C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe /fc C:\MyService.dll2;
    System.Diagnostics.Process.Start("CMD.exe",strCmdLine);
    process1.Close();
Avatar billede dr_chaos Nybegynder
20. december 2005 - 10:49 #5
rettelse:
    strCmdLine = @"C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe /fc C:\MyService.dll2;
Avatar billede spif2001 Nybegynder
20. december 2005 - 10:49 #6
hmmm..  Exception:

System.ComponentModel.Win32Exception: Den angivne fil blev ikke fundet
  at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
  at System.Diagnostics.Process.Start()
  at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
  at System.Diagnostics.Process.Start(String fileName, String arguments)
  at StartProj.MainForm.buttonRunCommand_Click(Object sender, EventArgs e) in c:\vss\funkicommunicator\startproj\mainform.cs:line 439

og dll'en ligger i roden af C.
Avatar billede spif2001 Nybegynder
20. december 2005 - 10:51 #7
dr_chaos - den havde jeg også fundet på nettet, men samme resultat
Avatar billede spif2001 Nybegynder
20. december 2005 - 10:52 #8
og jeg har tjekket at regsvcs.exe ligger hvor den skal
Avatar billede dr_chaos Nybegynder
20. december 2005 - 10:53 #9
prøv lige med :
    strCmdLine = @"C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe /fc C:\MyService.dll;
Avatar billede spif2001 Nybegynder
20. december 2005 - 10:57 #10
med chaos eks. starter den en commando prompt, men gør ikke noget.

Cursoren står bare og blinker for enden af en sti angivelse til mit debug bibliotek
Avatar billede dr_chaos Nybegynder
20. december 2005 - 11:00 #11
prøv lige at ret
C:\WINDOWS\Microsoft.NET\Framework\1.1.4322\regsvcs.exe
til
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\regsvcs.exe

du mangler et v i stien derfor fejler den.
Avatar billede dr_chaos Nybegynder
20. december 2005 - 11:00 #12
du kan bare bruge arnes eksempel det virker hos mig.
Avatar billede spif2001 Nybegynder
20. december 2005 - 11:03 #13
haha - jo tak - nu virker det - på Arnes facon - det var selvf. v'et der manglede i stien - skovl mig.

Smid et svar begge to - 25 til arne og 5 til chaos for v'et  :)
Avatar billede dr_chaos Nybegynder
20. december 2005 - 11:03 #14
:)
Avatar billede arne_v Ekspert
20. december 2005 - 11:06 #15
.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester