|
Having trouble getting service to start. First I thought it was because I was running on XP_x64. Then I tried on W2K3_x86 with same results. The service account is set to a domain admin account. Here is the event log entry:
Service cannot be started. System.IO.IOException: The device is not ready.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.Xml.XmlTextWriter..ctor(String filename, Encoding encoding)
at System.Data.DataSet.WriteXml(String fileName, XmlWriteMode mode)
at System.Data.DataSet.WriteXml(String fileName)
at OpenFilesServer.OpenFilesService.readxmlIni(String[] inargs)
at OpenFilesServer.OpenFilesService.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Here is the openfilesini.xml file:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Settings>
<OutputDir>C:\Temp\Openfiles_scr\OpenFiles\</OutputDir>
<TimerElapse>60000</TimerElapse>
</Settings>
<FileServers>
<FileServerName>\\dc1</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
<FileServers>
<FileServerName>\\fps1</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
</NewDataSet>
Also, service shows up as "OpenFilesSever". Notice the typo...
Any help appreciated.
tx
|
|
|
|
|
I would guess that the server shares you are trying to look at are not set up properly. It appears that the error is that the servers it is trying to look at can not be accessed. Since the service is running as domain admin (note I would not suggest this) that user should have rights, so my best guess would be that the share has some problem with it.
I would perhaps try to access only of the two that you have in the ini file. See if perhaps one works over the other. If neither work, try a local file share on the local server. If that doesn't work there is certainly something weird going on.
If it works locally, then you know that there is some rights issue on the other servers file share.
Anyway those are my best guesses.
Ben
|
|
|
|
|
The openfilesini.xml file was included in your download package. This is confusing because you state in your instructions to start the service so it creates the file. OK, so I delete the file and see if the service creates the file...hmmm not so. So I'm forced to use the file you provided which is not a big deal to me. However here's the point, I'm getting the same error regardless if the file exists or not which means that it's failing even before any server or share information is parsed or validated.
I created the shares in a typical fashion. Right click the folder, go to sharing and security, blah blah blah. I gave Everyone full access and I'm using a domain admin account because it's just for testing and I want to rule out permissions at this point-I will secure later once I get this working.
Is there a problem because the service name is misspelled?
|
|
|
|
|
I am pretty sure the service name being misspelled doesn't have anything to do with it.
It sounds like the shares were set up correctly. Did you put the share file names in the xml file?
If you did can you access the by going to start\run put in the \\servername\sharefolder?
If you can access them from the server, I would guess the service should be able to as well.
There is an outside chance that the service is not trusted. If that is the case then the service would not have IO rights on the server at all.
It sounds like you are a pretty good admin, so you might be one of those people who log into to their servers with a non admin account and then use runas when the want to do an admin function. If by chance you installed the windows service as a non server admin you could be having .net security problems because the app isn't trusted. If that is the case I would un install the service and then install it as an admin user. Kind of a stab in the dark.
Anyway, I hope that helps.
Ben
|
|
|
|
|
I believe so:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Settings>
<OutputDir>\\fps1\OpenFile\</OutputDir>
<TimerElapse>60000</TimerElapse>
</Settings>
<FileServers>
<FileServerName>\\dc1</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
<FileServers>
<FileServerName>\\fps1</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
</NewDataSet>
Why do you think the service will create the file when you first start it? So why is the file included in the download?
|
|
|
|
|
Ok,
The fileservername \\fps1 and \\dc1 are just made up names. So you need to put your server\share name in there. The files I attached to the samples are so you can see what the file should look like. The output file should automatically get created. I don't believe the xml file will get auto created and it needs to have the correct values in it to work.
Ben
|
|
|
|
|
fps1 and dc1 are my server names (note your sample showed server1; server2; server3). Also note your sample file doesn't include share names so I'm confused why you suggest I use "server\share name". Granted Server\ShareName is required for the output directory but I assume probably not for the file servers. I'm also assuming your service uses openfiles.exe which according to its syntax only takes a server argument (without a share name)- Having a share name generates an error.
Overall I think the xml file is fine so there must be something missing at the OS level. Do I need to have COM+ or ASP.NET or DTC et al, installed in order to make this work? Everyone else seems to have gotten it to work which makes me think, as a non-programmer, I must be missing something. I'm going to try installing ASP.NET in the AM and see if that works.
Your patience has been appreciated.
|
|
|
|
|
What operating system are you using? I am wondering if c:\windows\system32\openfiles.exe exists. If you are running win2000 it might be c:\winnt\system32\openfiles.exe, or it might not exist at all. Although the error you have been getting is an IO error which usually means the correct rights are not assigned. You are sure you installed the windows service as an admin user?
ASP.net is not used in this app. Just the .net 1.1 framework. So as long as that is loaded it should be fine.
Ben
|
|
|
|
|
Yes, installed as admin user. Also verified c:\windows\system32\openfiles.exe exists. Operating system is Windows_2003_STD_R2. The following framework folders exist: v1.0.3705; v1.1.4322; v2.0.50727. The last two with a different installutil.exe although I've tried both.
I just stumbled accross the .net wizard under admin tools and ran "trust an assembly" against the OpenFilesServer.exe. It was set to none but raised it to Full Trust.
Still doesn't work. So how do I check rights for this application/service? I'm assuming it's something more extensive than regular old NTFS file level permissions.
|
|
|
|
|
You know looking at the error message again it appears to not have rights to read the xmlini file on the local drive. That seems kind of weird, but that seems to be what the error message is saying.
Ben
|
|
|
|
|
Should there be any start parameters that need to be specified in the service properties?
|
|
|
|
|
Hi there,
I am very keen to deploy your tool on my network, and it went well except for one thing. If I specify our server, Server01 in the ini.xml file, no file gets written and I get the following event in the application event viewer:
-----
Open Files Service sendcmd error: Index and length must refer to a location within the string.
Parameter name: length : 3:35 PM
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
-----
If I specify the name of a server which does not exist, a file gets written with no (real) content. So everything appears to be working, but this error is preventing the listing of files from our active server. Any advice you can offer?
|
|
|
|
|
My best guess would be that you don't have the \\Server01 you just have Server01. You are getting the error since the code assumes that you will have a server name. It should be an easy thing to fix. When I wrote this app a few years ago I couldn't run the windows service on the server I wanted to check. Anyway, I think you can modify the code slightly or add the \\ to the front of the server name. If you are still having issues send me the contents of your xml file, or I could send you where the code would need to change if you leave the server blank in the file. You might be able to remove the server node completely and it might still work, I would have to double check to be sure.
Ben
|
|
|
|
|
Ben,
Thanks for the swift reply! I checked my XML file, and I did have the \\ prefix in place. (I tried it with the \\ removed as well, just to see - no luck.) Here is my XML:
-----
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Settings>
<OutputDir>D:\Home\Software Resources\Openfiles\</OutputDir>
<TimerElapse>60000</TimerElapse>
</Settings>
<FileServers>
<FileServerName>\\Server01</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
</NewDataSet>
-----
If I add a second entry for a nonexistent server like this:
<FileServers>
<FileServerName>\\Server01</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
<FileServers>
<FileServerName>\\Server02</FileServerName>
<Active_Flag>Y</Active_Flag>
</FileServers>
then I get files for Server02 as follows: Server02_19.xml, Server02_20.xml, Server02_21.xml, etc with contents:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<CurrentTime>
<FileDateTime>2007-06-04T16:20:06.6875000-06:00</FileDateTime>
</CurrentTime>
</NewDataSet>
So the application is definitely running, it just doesn't like the real server. Does this provide any assistance?
|
|
|
|
|
Well, your xml file looks fine. So you are on the server that you want to run the open files on? If not then you need to make sure the user that you are using has the power user access to that server. You need that level of access so you can run the openfile on it. So you should have created a domain user that you use for your login for the windows service. So that user need to be a power user on the server you want the openfiles to be run against. Anyway, I hope that does it. Let me know.
Ben
|
|
|
|
|
Ben,
Thanks for the pointers. The service is running on the target server (Server01) as a user with sufficient privileges - when I log on to the server as this user and issue the Openfiles command from a cmd window, it executes properly.
An interesting point, I tried fouling the FileServerName field with extra slashes and insufficient slashes:
<fileservers>
<fileservername>\Server01
<active_flag>Y
and
<fileservers>
<fileservername>\\\Server01
<active_flag>Y
When I do either of these it writes out the XML file for Server01, however its contents just contain a timestamp. Crazy attempt I know, but this indicates to me that the XML is fine with two slashes - and that something is going awry with the command being sent. I researched the error I am getting:
Open Files Service sendcmd error: Index and length must refer to a location within the string.
Parameter name: length : 10:03 AM
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
It would appear that somewhere in the program something is being done to a string which lacks sufficient length to be done; for example, reading character 25 from the string "Hello". Is the sendcmd variable something I can view or see what its contents are?
|
|
|
|
|
The source files are all in the download. The sendcmd is just a method inside of the service.
Here it is you can also just download the source your self.
private void sendCmd(string infileserver , string outfilename )
{
Process myprocess = new Process();
myprocess.StartInfo.FileName = "c:\\windows\\system32\\openfiles.exe";
myprocess.StartInfo.Arguments = "/query /s " + infileserver + " /v";
myprocess.StartInfo.UseShellExecute = false;
myprocess.StartInfo.CreateNoWindow = true;
myprocess.StartInfo.RedirectStandardOutput = true;
try
{
myprocess.Start();
if ((myprocess.StandardOutput != null))
{
string tmpstr2 = String.Empty;
DSFileData.Tables[0].Clear();
DSFileData.Tables[1].Clear();
object[] values = new object[6];
object[] values2 = new object[1] {DateTime.Now};
int cnt = 0;
while (myprocess.StandardOutput.Peek() >= 0)
{
tmpstr2 = myprocess.StandardOutput.ReadLine();
cnt += 1;
if (cnt > 5)
{
values[0] = tmpstr2.Substring(0, 15).Trim();
values[1] = tmpstr2.Substring(16, 8).Trim() ;
values[2] = tmpstr2.Substring(25, 20).Trim();
values[3] = tmpstr2.Substring(46, 10).Trim ();
values[4] = tmpstr2.Substring(57, 10).Trim();
values[5] = tmpstr2.Substring(68, 15).Trim();
values[6] = tmpstr2.Substring(84);
DSFileData.Tables[0].LoadDataRow(values, true);
}
}
DSFileData.Tables[0].AcceptChanges();
DSFileData.Tables[1].LoadDataRow(values2, true);
DSFileData.Tables[1].AcceptChanges();
DSFileData.WriteXml(outfilename);
}
myprocess.WaitForExit();
}
catch (Exception e )
{
EventLog.WriteEntry("Open Files Service sendcmd error: " + e.Message + " : " + DateTime.Now.ToShortTimeString());
}
finally
{
myprocess.Close();
};
}
|
|
|
|
|
Kubben, I have found the problem! Openfiles outputs different information on Windows SBS2003 than on previous versions of windows. When I issue the command:
openfiles /query /s \\server01 /v
on SBS2003, I get the following returned:
<br />
<br />
INFO: The system global flag 'maintain objects list' needs<br />
to be enabled to see local opened files.<br />
See Openfiles /? for more information.<br />
<br />
<br />
Files opened remotely via local share points:<br />
---------------------------------------------<br />
<br />
Hostname ID Accessed By Type #Locks Open Mode Open File (Path\executable) <br />
=============== ======== ==================== ========== ========== =============== ================================================================================<br />
SERVER01 18216 ARKO Windows 0 Read D:\Jobs\2007\7108-GVD\Drawings\7108-GVD.pdf<br />
If I issue the same command on Windows XP, I get the following:
<br />
<br />
Hostname ID Accessed By Type #Locks Open Mode Open File (Path\executable) <br />
=============== ======== ==================== ========== ========== =============== ================================================================================<br />
server01 18216 ARKO Windows 0 Read D:\Jobs\2007\7108-GVD\Drawings\7108-GVD.pdf<br />
See that crazy info stuff at the beginning? Because those strings are longer than 5 characters, they get processed. I can think of two ways to solve this; 1) I tried replacing the openfiles.exe on SBS2003 (a 78k file) with the one from my XP machine (a 66k file) but when I do that, a few seconds later, the system file protection thingy overwrites the 66k file with the 78k file. So my other fix is to look at the program - the problem is the routine looks for position, say, 68 in any string longer than 5 characters. Looking at the output, the longest 'useless' line is the one starting with the word INFO: which has 58 characters - so what if I set your ignore value to, oh, say 60?
<br />
if (cnt > 60)<br />
Would that do it, ignore lines shorter than 60 characters? Now, I don't know a thing about programming, I can use a text editor but I've never compiled a program, would you be able to help me make the change above? It would mean a lot to me, then you could declare your program SBS2003 compatible Or if you can help me turn off protection of that openfiles.exe on my server so I can put the XP version there that would be great. Maybe I could set the PATH to point to a resource folder on the server with the XP openfiles.exe so that one runs preferrentially to the one in C:\WINDOWS\system32 ?
|
|
|
|
|
I will work on it, I will let you know when it is done.
Ben
|
|
|
|
|
Unbelievable, Ben, you're awesome! God bless you. I just tried a program to turn off file protection, and for some reason it still overwrites the openfiles.exe with the SBS2003 edition. I did however, from the exact same system, get the following text outputs in the brief second before the file is replaced:
From the SBS2003 openfiles.exe:
<br />
<br />
INFO: The system global flag 'maintain objects list' needs<br />
to be enabled to see local opened files.<br />
See Openfiles /? for more information.<br />
<br />
<br />
Files opened remotely via local share points:<br />
---------------------------------------------<br />
<br />
Hostname ID Accessed By Type #Locks Open Mode Open File (Path\executable) <br />
=============== ======== ==================== ========== ========== =============== ================================================================================<br />
SERVER01 13 ARKO Windows 0 Read D:\Home\User Folders\Arko\projects.xls<br />
SERVER01 164 SMITH Windows 0 Write + Read \PIPE\spoolss<br />
that's one blank line, the line starting with INFO, two lines with 6 leading spaces, and then the exact same output as the WinXP version begins (starting with two blank lines, the header, etc.)
From the WinXP openfiles.exe:
<br />
<br />
<br />
Files Opened Remotely via local share points:<br />
---------------------------------------------<br />
<br />
Hostname ID Accessed By Type #Locks Open Mode Open File (Path\executable) <br />
=============== ======== ==================== ========== ========== =============== ================================================================================<br />
SERVER01 13 ARKO Windows 0 Read D:\Home\User Folders\Arko\projects.xls<br />
SERVER01 164 SMITH Windows 0 Write + Read \PIPE\spoolss<br />
<br />
In that one as well are two blank lines then the header starts.
I hope I am providing you with useful information, and if there is any way I can help don't hesitate to ask! Again, you're awesome. Would it be useful to send you the SBS2003 openfiles.exe to experiment with?
|
|
|
|
|
Ok I have found some info. to run local you need to do at a cmd prompt:
Openfiles /local ON
After you have run this command you will have to reboot your server 2003
Still it looks like the format of the info is different so it may take me a little time to correct it.
Thanks,
Ben
|
|
|
|
|
I orignally wrote this in vb.net and then translated it into C#. It appears that my C# code had a few bugs. Anyway, here is the updated code:
Here is what the new sendcmd method looks like:
private void sendCmd(string infileserver , string outfilename )
{
Process myprocess = new Process();
myprocess.StartInfo.FileName = "c:\\windows\\system32\\openfiles.exe";
myprocess.StartInfo.Arguments = "/query /s " + infileserver + " /v";
myprocess.StartInfo.UseShellExecute = false;
myprocess.StartInfo.CreateNoWindow = true;
myprocess.StartInfo.RedirectStandardOutput = true;
try
{
myprocess.Start();
System.Threading.Thread.Sleep(10000);
if ((myprocess.StandardOutput != null))
{
string tmpstr2 = String.Empty;
DSFileData.Tables[0].Clear();
DSFileData.Tables[1].Clear();
object[] values = new object[7];
object[] values2 = new object[1] {DateTime.Now};
int cnt = 0;
Boolean doneSkip = false;
while (myprocess.StandardOutput.Peek() >= 0)
{
tmpstr2 = myprocess.StandardOutput.ReadLine();
if (tmpstr2 == "Files opened remotely via local share points:")
{
doneSkip = true;
continue ;
}
System.Threading.Thread.Sleep(100);
if (doneSkip)
{
cnt += 1;
if (cnt > 4)
{
values[0] = tmpstr2.Substring(0, 16).Trim();
values[1] = tmpstr2.Substring(16, 9).Trim() ;
values[2] = tmpstr2.Substring(25, 21).Trim();
values[3] = tmpstr2.Substring(46, 10).Trim ();
values[4] = tmpstr2.Substring(57, 10).Trim();
values[5] = tmpstr2.Substring(68, 15).Trim();
values[6] = tmpstr2.Substring(84);
DSFileData.Tables[0].LoadDataRow(values, true);
}
}
}
DSFileData.Tables[0].AcceptChanges();
DSFileData.Tables[1].LoadDataRow(values2, true);
DSFileData.Tables[1].AcceptChanges();
DSFileData.WriteXml(outfilename);
}
myprocess.WaitForExit();
}
catch (Exception e )
{
EventLog.WriteEntry("Open Files Service sendcmd error: " + e.Message + " : " + DateTime.Now.ToShortTimeString());
}
finally
{
myprocess.Close();
};
}
Ben
|
|
|
|
|
Hello hello,
I'm at the same point.
I run the openfiles.exe under 2003 Windows Server and I have the same error.
Have you done an update on your VB.NET version ?
Private Sub Sendcmd(ByVal infileserver As String, ByVal outfilename As String)
'This will write out a file each minute.
Dim myprocess As New Process
'Program you want to launch execute etc.
myprocess.StartInfo.FileName = "c:\windows\system32\openfiles.exe"
myprocess.StartInfo.Arguments = "/query /s " + infileserver + " /v"
'This is important. Since this is a windows service it will run
'even though no one is logged in.
'Therefore there is not desktop available so you better
'not show any windows dialogs
myprocess.StartInfo.UseShellExecute = False
myprocess.StartInfo.CreateNoWindow = True
'We want to redirect the output from the openfiles call to the program
'Since there won't be any window to display it in
myprocess.StartInfo.RedirectStandardOutput = True
'Create the shell and execute the command
Try
myprocess.Start()
If Not (myprocess.StandardOutput Is Nothing) Then
'This string is used to contain what openfiles program returns
Dim tmpstr2 As String = String.Empty
DSFileData.Tables(0).Clear()
DSFileData.Tables(1).Clear()
Dim values(6) As Object 'This storeds the fields from openfiles
Dim values2(0) As Object 'This is the current date
values2(0) = DateTime.Now
Dim cnt As Integer = 0
Do
tmpstr2 = myprocess.StandardOutput.ReadLine
' Add some text to the file.
If Not (tmpstr2 Is Nothing) Then
cnt += 1
'The output is fixed length
If cnt > 5 Then
values(0) = tmpstr2.Substring(0, 15).Trim 'Host name
values(1) = tmpstr2.Substring(16, 8).Trim 'ID
values(2) = tmpstr2.Substring(25, 20).Trim 'accessed by
values(3) = tmpstr2.Substring(46, 10).Trim 'type
values(4) = tmpstr2.Substring(57, 10).Trim 'locks
values(5) = tmpstr2.Substring(68, 15).Trim 'open mode
values(6) = tmpstr2.Substring(84) 'open file
DSFileData.Tables(0).LoadDataRow(values, True)
End If
End If
Loop Until tmpstr2 Is Nothing
'Table(0) has the rows from openfiles
DSFileData.Tables(0).AcceptChanges()
'table(1) has the current date
DSFileData.Tables(1).LoadDataRow(values2, True)
DSFileData.Tables(1).AcceptChanges()
'Now we write out the file so the client can read it.
DSFileData.WriteXml(outfilename)
End If
'Wait for the process to finish before continuing.
myprocess.WaitForExit()
Catch e As System.Exception
EventLog.WriteEntry("Open Files Service sendcmd error: " + e.Message + " : " + DateTime.Now.ToShortTimeString)
Finally
'Free resources
myprocess.Close()
End Try
End Sub
-------
What should I do to get it work ? Replace the openfiles.exe by an XP version of this files ?
Thanks again for your help.
Francis
-- modified at 9:53 Friday 8th June, 2007
|
|
|
|
|
Well, you need a new executable with the fixed code. Do you know how to compile vb.net? If so take the code below and replace the method from the download code. If you don't want to compile it your self send me an email. Don't forget that you have to also enable this function.
Go to a command prompt and type:
openfiles /Local on
then you will need to reboot the server.
Here is the changed code in vb.net
Private Sub Sendcmd(ByVal infileserver As String, ByVal outfilename As String)
'This will write out a file each minute.
Dim myprocess As New Process
'Program you want to launch execute etc.
myprocess.StartInfo.FileName = "c:\windows\system32\openfiles.exe"
myprocess.StartInfo.Arguments = "/query /s " + infileserver + " /v"
'This is important. Since this is a windows service it will run
'even though no one is logged in.
'Therefore there is not desktop available so you better
'not show any windows dialogs
myprocess.StartInfo.UseShellExecute = False
myprocess.StartInfo.CreateNoWindow = True
'We want to redirect the output from the openfiles call to the program
'Since there won't be any window to display it in
myprocess.StartInfo.RedirectStandardOutput = True
'Create the shell and execute the command
Try
myprocess.Start()
System.Threading.Thread.Sleep(10000)
If Not (myprocess.StandardOutput Is Nothing) Then
'This string is used to contain what openfiles program returns
Dim tmpstr2 As String = String.Empty
DSFileData.Tables(0).Clear()
DSFileData.Tables(1).Clear()
Dim values(7) As Object 'This storeds the fields from openfiles
Dim values2(0) As Object 'This is the current date
values2(0) = DateTime.Now
Dim cnt As Integer = 0
Dim doneSkip As Boolean = False
Do
tmpstr2 = myprocess.StandardOutput.ReadLine
If tmpstr2 = "Files opened remotely via local share points:" Then
doneSkip = True
End If
System.Threading.Thread.Sleep(100)
If doneSkip Then
' Add some text to the file.
If Not (tmpstr2 Is Nothing) Then
cnt += 1
'The output is fixed length
If cnt > 5 Then
values(0) = tmpstr2.Substring(0, 15).Trim 'Host name
values(1) = tmpstr2.Substring(16, 8).Trim 'ID
values(2) = tmpstr2.Substring(25, 20).Trim 'accessed by
values(3) = tmpstr2.Substring(46, 10).Trim 'type
values(4) = tmpstr2.Substring(57, 10).Trim 'locks
values(5) = tmpstr2.Substring(68, 15).Trim 'open mode
values(6) = tmpstr2.Substring(84) 'open file
DSFileData.Tables(0).LoadDataRow(values, True)
End If
End If
End If
Loop Until tmpstr2 Is Nothing
'Table(0) has the rows from openfiles
DSFileData.Tables(0).AcceptChanges()
'table(1) has the current date
DSFileData.Tables(1).LoadDataRow(values2, True)
DSFileData.Tables(1).AcceptChanges()
'Now we write out the file so the client can read it.
DSFileData.WriteXml(outfilename)
End If
'Wait for the process to finish before continuing.
myprocess.WaitForExit()
Catch e As System.Exception
EventLog.WriteEntry("Open Files Service sendcmd error: " + e.Message + " : " + DateTime.Now.ToShortTimeString)
Finally
'Free resources
myprocess.Close()
End Try
End Sub
Ben
|
|
|
|
|
Hi Ben,
Thank you for this fast reply ! Yes I know how to compile in VB.NET, I'll try this (however I can't restart this server now). I'll let you know if it's work fine for me.
Best regards,
Francis
|
|
|
|
|