473,387 Members | 3,781 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

Interaction of windows service with UI

Hello all,

I am trying to develop an application which will run as a windows
service.
The application should have Normal options available with service
like start, stop and pause but along with this I need an option to
show the windows application which
my service has started as a result of its invokation.

So I have written a service control by adding a new project of type
Windows Service

below is the sample code for the class which I have written for the
service to start and work.
Public Class FirstWindowsService

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
Me.Timer1.Enabled = True

'I have added a ProcessControl which .NET provides to execute
the process which
'I want to run as a service .
'So now in my case it is the windows application which I want
to execute.
Process1.Start()
Me.LogMessage("Service started")

End Sub

Protected Overrides Sub OnStop()
Me.Timer1.Enabled = False
Me.LogMessage("Service stoped")

Try
If Not (Process1.HasExited) Then
Process1.Kill()
End If

Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub

Protected Overrides Sub OnPause()
MyBase.OnPause()
Me.Timer1.Enabled = False
Me.LogMessage("Service Paused")
End Sub
Public Sub LogMessage(ByVal message As String)
Dim connection As SqlConnection = Nothing
Try
connection = New
SqlConnection("Server=LocalHost;Database=master;Us er
Id=sa;password=;")
Dim command As SqlCommand = New SqlCommand("INSERT INTO
MyServiceLog (vc_Status, dt_Created) VALUES ('" + message +
"',getdate())", connection)
connection.Open()
Dim totalRows = command.ExecuteNonQuery
Catch ex As Exception
Debug.WriteLine(ex.Message)
Finally
connection.Close()
End Try
End Sub
End Class
Now I have created a windows application which could provide me the
notifyIcon where I can put in my menus for start,stop,pause and View
the application.
below is the sample code for the class which I have written for
making this to work

'This pauses service

Private Sub PauseToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
PauseToolStripMenuItem.Click
Try
ServiceController1.Pause()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'This Continues paused service
Private Sub ContinueMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ContinueMenuItem.Click
Try
ServiceController1.Continue()

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

'This Stops service
Private Sub StopToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
StopToolStripMenuItem.Click
Try
ServiceController1.Stop()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'Enable disable proper menus
Private Sub ContextMenuStrip1_Opening(ByVal sender As
System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles ContextMenuStrip1.Opening

ServiceController1.Refresh()
Try
Select Case ServiceController1.Status

Case ServiceControllerStatus.Paused

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = True

Case ServiceControllerStatus.Running
StartToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = True
StopToolStripMenuItem.Enabled = True

Case ServiceControllerStatus.Stopped
StartToolStripMenuItem.Enabled = True
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

Case ServiceControllerStatus.StopPending,
ServiceControllerStatus.StartPending _
, ServiceControllerStatus.PausePending,
ServiceControllerStatus.ContinuePending

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

End Select

Catch ex As Exception
MsgBox(ex.Message)

End Try

ServiceController1.Refresh()

End Sub

I need help on how to make the application to interact with desktop. I
want to show the
application of my service when a ViewToolStripMenuItem is clicked to
show the application.

I have tried some code which manipulates the registry contents in
order to make the application to interact with desktop. It sets the
proper values but won't lauch application
What should I do?

below is the link which I have used for this is there any other
alternative?

http://www.codeproject.com/cs/system...icedesktop.asp

Mar 29 '07 #1
5 4235
Your question is not clear.. when you say "I need an option to show the
windows application which my service has started as a result of its
invokation." I am not getting a meaning there.. specially since your OnStart
method's code is missing.. but any way if you are trying to fire a Windows
Form application via your windows service.. I doubt whether it is possible..

Nirosh.
<so*************@yahoo.comwrote in message
news:11*********************@y66g2000hsf.googlegro ups.com...
Hello all,

I am trying to develop an application which will run as a windows
service.
The application should have Normal options available with service
like start, stop and pause but along with this I need an option to
show the windows application which
my service has started as a result of its invokation.

So I have written a service control by adding a new project of type
Windows Service

below is the sample code for the class which I have written for the
service to start and work.
Public Class FirstWindowsService

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
Me.Timer1.Enabled = True

'I have added a ProcessControl which .NET provides to execute
the process which
'I want to run as a service .
'So now in my case it is the windows application which I want
to execute.
Process1.Start()
Me.LogMessage("Service started")

End Sub

Protected Overrides Sub OnStop()
Me.Timer1.Enabled = False
Me.LogMessage("Service stoped")

Try
If Not (Process1.HasExited) Then
Process1.Kill()
End If

Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub

Protected Overrides Sub OnPause()
MyBase.OnPause()
Me.Timer1.Enabled = False
Me.LogMessage("Service Paused")
End Sub
Public Sub LogMessage(ByVal message As String)
Dim connection As SqlConnection = Nothing
Try
connection = New
SqlConnection("Server=LocalHost;Database=master;Us er
Id=sa;password=;")
Dim command As SqlCommand = New SqlCommand("INSERT INTO
MyServiceLog (vc_Status, dt_Created) VALUES ('" + message +
"',getdate())", connection)
connection.Open()
Dim totalRows = command.ExecuteNonQuery
Catch ex As Exception
Debug.WriteLine(ex.Message)
Finally
connection.Close()
End Try
End Sub
End Class
Now I have created a windows application which could provide me the
notifyIcon where I can put in my menus for start,stop,pause and View
the application.
below is the sample code for the class which I have written for
making this to work

'This pauses service

Private Sub PauseToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
PauseToolStripMenuItem.Click
Try
ServiceController1.Pause()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'This Continues paused service
Private Sub ContinueMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ContinueMenuItem.Click
Try
ServiceController1.Continue()

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

'This Stops service
Private Sub StopToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
StopToolStripMenuItem.Click
Try
ServiceController1.Stop()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'Enable disable proper menus
Private Sub ContextMenuStrip1_Opening(ByVal sender As
System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles ContextMenuStrip1.Opening

ServiceController1.Refresh()
Try
Select Case ServiceController1.Status

Case ServiceControllerStatus.Paused

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = True

Case ServiceControllerStatus.Running
StartToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = True
StopToolStripMenuItem.Enabled = True

Case ServiceControllerStatus.Stopped
StartToolStripMenuItem.Enabled = True
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

Case ServiceControllerStatus.StopPending,
ServiceControllerStatus.StartPending _
, ServiceControllerStatus.PausePending,
ServiceControllerStatus.ContinuePending

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

End Select

Catch ex As Exception
MsgBox(ex.Message)

End Try

ServiceController1.Refresh()

End Sub

I need help on how to make the application to interact with desktop. I
want to show the
application of my service when a ViewToolStripMenuItem is clicked to
show the application.

I have tried some code which manipulates the registry contents in
order to make the application to interact with desktop. It sets the
proper values but won't lauch application
What should I do?

below is the link which I have used for this is there any other
alternative?

http://www.codeproject.com/cs/system...icedesktop.asp

Mar 29 '07 #2
Are you looking for an application that will allow a small application
in the toolbar to appear when the service is startef or when it
executes at timed interval?

If so there will be a huge security hole. It can be done via the
ServiceInstaller.cs-- but Microsoft are not going to support his
option in Vista (we shall see). But I recommend that you avoid using
Interact with Desktop as it is NOT reliable if your service shells or
uses Diagnostics.Process.

Regards

http://www.auratius.co.za

Auratius

Mar 29 '07 #3
In general, this is a bad idea. Services are designed to run before there is
any user logged onto the machine. So your service could be attempting to
start an executable with a UI when there is nobody logged on to even see it.
Suggest you look for a different way to accomplish your goal.
Peter

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"so*************@yahoo.com" wrote:
Hello all,

I am trying to develop an application which will run as a windows
service.
The application should have Normal options available with service
like start, stop and pause but along with this I need an option to
show the windows application which
my service has started as a result of its invokation.

So I have written a service control by adding a new project of type
Windows Service

below is the sample code for the class which I have written for the
service to start and work.
Public Class FirstWindowsService

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
Me.Timer1.Enabled = True

'I have added a ProcessControl which .NET provides to execute
the process which
'I want to run as a service .
'So now in my case it is the windows application which I want
to execute.
Process1.Start()
Me.LogMessage("Service started")

End Sub

Protected Overrides Sub OnStop()
Me.Timer1.Enabled = False
Me.LogMessage("Service stoped")

Try
If Not (Process1.HasExited) Then
Process1.Kill()
End If

Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub

Protected Overrides Sub OnPause()
MyBase.OnPause()
Me.Timer1.Enabled = False
Me.LogMessage("Service Paused")
End Sub
Public Sub LogMessage(ByVal message As String)
Dim connection As SqlConnection = Nothing
Try
connection = New
SqlConnection("Server=LocalHost;Database=master;Us er
Id=sa;password=;")
Dim command As SqlCommand = New SqlCommand("INSERT INTO
MyServiceLog (vc_Status, dt_Created) VALUES ('" + message +
"',getdate())", connection)
connection.Open()
Dim totalRows = command.ExecuteNonQuery
Catch ex As Exception
Debug.WriteLine(ex.Message)
Finally
connection.Close()
End Try
End Sub
End Class
Now I have created a windows application which could provide me the
notifyIcon where I can put in my menus for start,stop,pause and View
the application.
below is the sample code for the class which I have written for
making this to work

'This pauses service

Private Sub PauseToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
PauseToolStripMenuItem.Click
Try
ServiceController1.Pause()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'This Continues paused service
Private Sub ContinueMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ContinueMenuItem.Click
Try
ServiceController1.Continue()

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

'This Stops service
Private Sub StopToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
StopToolStripMenuItem.Click
Try
ServiceController1.Stop()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'Enable disable proper menus
Private Sub ContextMenuStrip1_Opening(ByVal sender As
System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles ContextMenuStrip1.Opening

ServiceController1.Refresh()
Try
Select Case ServiceController1.Status

Case ServiceControllerStatus.Paused

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = True

Case ServiceControllerStatus.Running
StartToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = True
StopToolStripMenuItem.Enabled = True

Case ServiceControllerStatus.Stopped
StartToolStripMenuItem.Enabled = True
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

Case ServiceControllerStatus.StopPending,
ServiceControllerStatus.StartPending _
, ServiceControllerStatus.PausePending,
ServiceControllerStatus.ContinuePending

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

End Select

Catch ex As Exception
MsgBox(ex.Message)

End Try

ServiceController1.Refresh()

End Sub

I need help on how to make the application to interact with desktop. I
want to show the
application of my service when a ViewToolStripMenuItem is clicked to
show the application.

I have tried some code which manipulates the registry contents in
order to make the application to interact with desktop. It sets the
proper values but won't lauch application
What should I do?

below is the link which I have used for this is there any other
alternative?

http://www.codeproject.com/cs/system...icedesktop.asp

Mar 29 '07 #4
Yes it is a bad idea but still is it possible??
I remember it is not possible, isn't that so??

Nirosh.

"Peter Bromberg [C# MVP]" <pb*******@yahoo.yabbadabbadoo.comwrote in
message news:2D**********************************@microsof t.com...
In general, this is a bad idea. Services are designed to run before there
is
any user logged onto the machine. So your service could be attempting to
start an executable with a UI when there is nobody logged on to even see
it.
Suggest you look for a different way to accomplish your goal.
Peter

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"so*************@yahoo.com" wrote:
>Hello all,

I am trying to develop an application which will run as a windows
service.
The application should have Normal options available with service
like start, stop and pause but along with this I need an option to
show the windows application which
my service has started as a result of its invokation.

So I have written a service control by adding a new project of type
Windows Service

below is the sample code for the class which I have written for the
service to start and work.
Public Class FirstWindowsService

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

Protected Overrides Sub OnStart(ByVal args() As String)
Me.Timer1.Enabled = True

'I have added a ProcessControl which .NET provides to execute
the process which
'I want to run as a service .
'So now in my case it is the windows application which I want
to execute.
Process1.Start()
Me.LogMessage("Service started")

End Sub

Protected Overrides Sub OnStop()
Me.Timer1.Enabled = False
Me.LogMessage("Service stoped")

Try
If Not (Process1.HasExited) Then
Process1.Kill()
End If

Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End Sub

Protected Overrides Sub OnPause()
MyBase.OnPause()
Me.Timer1.Enabled = False
Me.LogMessage("Service Paused")
End Sub
Public Sub LogMessage(ByVal message As String)
Dim connection As SqlConnection = Nothing
Try
connection = New
SqlConnection("Server=LocalHost;Database=master;U ser
Id=sa;password=;")
Dim command As SqlCommand = New SqlCommand("INSERT INTO
MyServiceLog (vc_Status, dt_Created) VALUES ('" + message +
"',getdate())", connection)
connection.Open()
Dim totalRows = command.ExecuteNonQuery
Catch ex As Exception
Debug.WriteLine(ex.Message)
Finally
connection.Close()
End Try
End Sub
End Class
Now I have created a windows application which could provide me the
notifyIcon where I can put in my menus for start,stop,pause and View
the application.
below is the sample code for the class which I have written for
making this to work

'This pauses service

Private Sub PauseToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
PauseToolStripMenuItem.Click
Try
ServiceController1.Pause()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'This Continues paused service
Private Sub ContinueMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ContinueMenuItem.Click
Try
ServiceController1.Continue()

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

'This Stops service
Private Sub StopToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
StopToolStripMenuItem.Click
Try
ServiceController1.Stop()

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

'Enable disable proper menus
Private Sub ContextMenuStrip1_Opening(ByVal sender As
System.Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles ContextMenuStrip1.Opening

ServiceController1.Refresh()
Try
Select Case ServiceController1.Status

Case ServiceControllerStatus.Paused

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = True

Case ServiceControllerStatus.Running
StartToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = True
StopToolStripMenuItem.Enabled = True

Case ServiceControllerStatus.Stopped
StartToolStripMenuItem.Enabled = True
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

Case ServiceControllerStatus.StopPending,
ServiceControllerStatus.StartPending _
, ServiceControllerStatus.PausePending,
ServiceControllerStatus.ContinuePending

StartToolStripMenuItem.Enabled = False
PauseToolStripMenuItem.Enabled = False
ContinueMenuItem.Enabled = False
StopToolStripMenuItem.Enabled = False

End Select

Catch ex As Exception
MsgBox(ex.Message)

End Try

ServiceController1.Refresh()

End Sub

I need help on how to make the application to interact with desktop. I
want to show the
application of my service when a ViewToolStripMenuItem is clicked to
show the application.

I have tried some code which manipulates the registry contents in
order to make the application to interact with desktop. It sets the
proper values but won't lauch application
What should I do?

below is the link which I have used for this is there any other
alternative?

http://www.codeproject.com/cs/system...icedesktop.asp


Mar 29 '07 #5
I have done this with a separate thread.
You can implement your application as a service, then in the OnStart event of the service create a secondary thread and start the user interface.

This will work only if the service is installed and configured to interact with desktop, and only if the service connection account is LocalSystem.
To achieve this you have to use the Windows APIS to register the service.
Please be aware that the LocalSystem user (in taskmanager you can see it as SYSTEM) will be not trusted in network, so no network printer or network directory share will be available to this user.
It is not easy to implement a service in this way, so do it only if it is strictly needed.

So the OnStart event should be:

protected override void OnStart(string[] args)
{
System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(StartUserInterface));
thread.IsBackground=true;
thread.Name=this.ServiceName+"UserInterface";
thread.Start();
}

And the StartUserInterface method should be:

private void StartUserInterface()
{
System.Windows.Forms.Application.Run(new Form1());
}

EggHeadCafe.com - .NET Developer Portal of Choice
http://www.eggheadcafe.com
Apr 12 '07 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Artur Kowalski | last post by:
I have a NotifyIcon in my Windows Service project and I am trying to add a ContextMenu to this NotifyIcon or use some of the mouse events. Everything isn't working. I think so base class of the...
2
by: Ann | last post by:
HI, All Is there a possibility that I could use Crystal Reports in a Windows Service? I am currently working in a project where a particular windows service would import data from excel files,...
3
by: Vitaly Zayko | last post by:
Is it possible to attach a form (C# .NET 2) to windows service and show it in OnStart event? When I tried to do this in general (new, Show()) way it just didn't do anything nor gave me any errors....
17
by: UJ | last post by:
Is there any way for a windows service to start a windows program ? I have a service that will need to restart a windows app if it needs to. TIA - Jeff.
2
by: deko | last post by:
When to use a privileged user thread rather than a windows service? That's the question raised in a previous post . It was suggested that if the service needs to interact with a WinForms app...
2
by: letibal | last post by:
Hello, I have written a windows service and created an installer for it. The service runs under the system accounts. When started, it launches a GUI. By default, the InteractiveProcess property...
3
by: Trevor | last post by:
In C++ you can allow your Windows program to act as a Windows Service by implementing some functions required by the Service Control Manager. This same application could be written in such a way...
3
by: sonu | last post by:
Hello all, I am trying to develop an application which will run as a windows service. The application should have Normal options available with service like start, stop and pause but along...
2
by: =?Utf-8?B?c3lzdGVtQ29uc3VsdGFudA==?= | last post by:
Can I use EnumchildWindows from a windows service to find the IE windows and Solitaire windows belonging to the logged on user? And if so then I'll need to know what call to use to get the users...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.