|
If the other guy has admin rights to the box, I don't think you can stop it. Remember, you are using the same protocol (RDP) that he is. You could disable RDP access for everybody except a special user you create, but I think a domain admin could still override you. Or anybody with access to the box.
I won't argue with you about just making it a service (since you already said you don't want to for whatever reason), but you can RUN it as a service:
http://www.tacktech.com/display.cfm?ttid=197[^]
|
|
|
|
|
Thanks!
I can create a service in visual studios also, but unfortunately that isn't optimal in this situation.
I have domain admin rights, I'd just like to be able to catch the log off event, cancel it and query AD, send them a pop up and say "Hello [ ], please don't kick me off, as I'm running [ ]"
But it appears that I'm the only one that has tried this
|
|
|
|
|
One other idea I had that may or may not work is if you trap the WM_QUERYENDSESSION window message. I know it works to block a local logoff / shutdown, but not sure if it will work remotely. Give it a whirl, might be what you are looking for.
|
|
|
|
|
I will try that, thank you!
|
|
|
|
|
Not sure if server 2008 supports this as it was added in Vista, but there is also the ShutdownBlockReasonCreate API that goes along with that windows message.
|
|
|
|
|
If you have long running processes, then perhaps they shouldn't be running under your personal login credentials. You should perhaps install them as services using a service account for credentials.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Hi,
Thanks for the reply. That'd be great, but they are not programs I wrote and have to use human interaction, so I have to have them run under a logged in session.
|
|
|
|
|
If it requires human interaction and such, then why is it being run on the server? Why can it not be run from your local computer? You have the credentials, so it shouldn't be access to the server for data that is an issue.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Thanks for the reply, there is no trust between the domains.
If there are any more questions about why it can't be done a different way, I will answer them all with one answer and say that this is the way I would prefer to do it, so the thread isn't derailed.
There has to be a way to prevent this, has anyone ever written code to do that?
|
|
|
|
|
There is no system event for this, as you call it.
There is also no way for you to prevent being kicked off. If another admin wants to boot you off, there's nothing you can do to stop it.
The only solution I can come up with to your problem is to build, in the other domain, a virtual server dedicated to you so nobody will touch it.
|
|
|
|
|
Thanks Dave
You are right, I may have to move this from integration to my own private lab
|
|
|
|
|
Restating the problem since I got confused.
You have an APP - call it A.
You want to run A on box Z and it takes a while. So while it is running you are not paying attention to Z.
Then another user comes along and logs into Z, which terminates your user session and terminates A.
So possible solutions.
1. Pretty sure another log in will already tell you that someone else is there. So you want an additional message to pop. And I am pretty sure that to have that pop during log in is going to require some very specific internal windows code. Not just a random app. And in terms of complexity and intrusiveness (including security) it is much higher than a windows service.
2. Create a windows service to run it - specific to the App.
3. Use the windows scheduler to run it.
4. Create a generic windows service, basically like 3, that allows you to run a task (like scheduler). More code than 2/3, but less complex to use.
5. Send an email telling people not to log in to the box.
For items 2/3/4 there is complexity in dealing with user input. For console IO you can use IO redirects. Either via cmd or via Process class. For a GUI it is certain to be more complicated since I would suspect you would need to intercept everything. Certainly something is possible since "Remote Desktop Connection" works.
turbosupramk3 wrote: I'm in a large organization,
Why not just have a virtual box and it is 'yours' so no one just randomly logs in?
|
|
|
|
|
I use a web based look-up service to obtain detailed information on IP addresses. It works great until the service goes down and the URL fails to render proper XML.
The error (when the service is down) occurs on the "xDoc = XDocument.Load(url)" statement but does NOT throw an XmlException that I can catch...instead the server (I use a host) locks up with an internal (500) error. Since this error is from the server and not my application, I get no stack trace.
All of my XML validation methods are predicated on the fact that I have the XDocument loaded first....then validate against an XML schema. But it's the load that fails so I have no chance to validate the XML. Any Ideas?
string url = String.Format("http://www.ipgp.net/api/xml/{0}/{1}", sourceIP, password);
try
{
xDoc = XDocument.Load(url);
}
catch (XmlException ex)
{
xDoc = XDocument.Load(safe);
}
UPDATE:
I figured out this UGLY hack to get around the problem for now. The following code first reads the webpage into a variable and then checks the variable for an XML tag that I know should be present. If XML tag can't be found then my default (safe) xml loads. I hope someone can PLEASE give me a better fix...thanks
HttpWebRequest myRequest =(HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();
if (ExactMatch(result, "<Country>"))
xDoc = XDocument.Load(url);
else
xDoc = XDocument.Load(Safe);
modified 21-Dec-11 18:13pm.
|
|
|
|
|
To see what is going on, you could just load the document from the url into a string first so that you can see if it is an issue with the request or response first. Once you have the string you just need to parse it into your XmlDocument. It adds a line of code, but it makes debugging and viewing your variables much easier.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
That is what my "Ugly Hack" that I posted does. Using 7 lines of code, it reads the XML into a string and looks at that string before deciding if the XML is to be loaded. Just seems like a terrible waste of time/resources. I don't understand why it doesn't simple kick out an XmlException as the documentation says it should. The server 500 error gets me every time.
Thanks for responding.
|
|
|
|
|
My hunch is that the error isn't coming from your own code. Are you running this code in a web application? If so, then maybe, but if your application isn't a web application then the likely source of the 500 error is the site you are trying to hit. If the source site is working properly when you enter your full url into a browser, then you may have an issue with how your url is constructed as well.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
Yes, my site is an asp.net web application. The error occurs anytime I try to load something using XDocument.load() that isn't in proper XML format. Wrapping it in a try block like I show above does no good. You can't validate the XML against an XML schema util you have it loaded...kind of a catch 22 in my case. I don't like the idea that XDocument(url) can stop my web-application from functioning (internal 500 error). The error does not come from my web-app code, it comes from the server running my web-application anytime I try to load fouled-up XML.
My hack has it working for now but I am certain that I am overlooking something simple. I guess if there were a simple fix, someone would have posted it by now.
Thanks again,
modified 21-Dec-11 18:20pm.
|
|
|
|
|
Enochs wrote: catch (XmlException ex)
What makes you think that that is the only possible exception that can be thrown? If another exception is thrown then it is going to result in some error response to the client (which is what you are seeing.)
Also maybe your url in the catch is failing.
Also shouldn't you log something if it fails?
modified 23-Dec-11 15:55pm.
|
|
|
|
|
Hello Everyone,
Actually I am facing one problem, please help me...
How to create schema in ms-access database using C# code?
Thanks in advance!!
|
|
|
|
|
Your question isn't very clear to me, however this[^] could be the answer.
|
|
|
|
|
Actually I want to create ms-access database with some schema name with the help of c# code.
|
|
|
|
|
Sorry, can't help you there; I have been using both Access and SQLServer, but always migrating away from Access, never creating one.
|
|
|
|
|
Using Interop you should be able to do this. That assumes you know how to create databases, tables etc using Access objects. You might be able to do it running SQL queries in Access - again assuming you know the required SQL. You can pick up some of it in the Access designer for queries - just create a make table one then switch to SQL view.
Regards
David R
---------------------------------------------------------------
"Every program eventually becomes rococo, and then rubble." - Alan Perlis
The only valid measurement of code quality: WTFs/minute.
|
|
|
|
|
Here is my suggestion. IF you have a copy of access, use it create the tables and views that you need. After doing that, you can write your C# application to use the Access database. I think you will find it a lot easier to create the database within MS Access that try to create it using C#.
|
|
|
|
|
Hi all,
I have created setup for my program . This setup creates shortcut icon on my desktop. But this icon have wrong target set. Target shown is 'MyInstaller' ( where 'MyInstaller' is deployment project name ). When I check other shortcuts available on my desktop, I found Target is set to '"C:\Program Files\Beyond Compare 3\BCompare.exe"' (for example). Why all the shortcuts created by me do not have such target? I wanted to use the target to process my documents.
Do I miss some settings here?
Thanks in advance !!
Amit
|
|
|
|