|
Hy,
I have the following application:
- server application that uses a digital certificate to login to a website; first time i run the app it requires the pin number from the token... certificate is stored on token); i use X509CertificateUI to select the certificate and it pops-up the token client to enter pin number;
- client application connects to my server app and send some data which the server passes to the website to get response and send back to the client.
Everything is working ok. BUT... i want to make it a windows service. (currently is form based). I have done the service part, i installed it, can start it from the service manager, but it doesn't show the certificate selection and the token client for the pin.
here is the server code to get the certificate;
var store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection selection = X509Certificate2UI.SelectFromCollection(store.Certificates,
"Digital Certificates",
"Select a certificate from the following list:",
X509SelectionFlag.
SingleSelection);
After i select it and enter the token pin number it works ok, but haven't been able to do the same as a windows service. I have also exported the certificate into a file from the token and declared a x509cert from local file but it should also require the token pin number.
X509Certificate2 localCert = new X509Certificate2(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\my.cer");
return localCert;
thanks
|
|
|
|
|
I believe you have to install the service as the user who's certificate will be used. I bet you're installing it as Local System or something like that.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
You're betting wrong. It does not matter how i install the service. I tried with Local System and with User but i get the same issue.
Using the X509Certificate2UI throws exception: "The current session is not interactive"... which is kinda obvious
Using the X509Certificate2 from file I get "Cannot create secure SSL/TLS channel" because it does not prompt me to enter the token pin number.
|
|
|
|
|
Services aren't supposed to launch UI windows. It looks like the certificate API is respecting that.
|
|
|
|
|
I already saw that... hence the "which is obvious...". I was asking if there is any other solution to pass the pin code.
|
|
|
|
|
Have you tried using a datafile to store the pin code and have the windows service read that file?
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
You probably already googled your issue, but I did find this (search phrase is "C# windows service load 509 certificate"):
http://msdn.microsoft.com/en-us/library/ms731899.aspx[^]
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
trying to paste clipboard contents to another application window(word doc or ms paint) using the folowing code
if (process != null && !process.HasExited && Clipboard.GetImage() != null)
{
Win32.SendMessage(process.MainWindowHandle, Win32.WM_PASTE, IntPtr.Zero, IntPtr.Zero);
}
it doesn't work.
is anything wrong with the above approach?
SendMessage and WM_PASTE does it work for sending the clipboard contents to another running process or it works only to Paste the contents of the Clipboard into a control
any idea?
- Regards - J O N
A good thing is a bad thing if it keeps you from the best thing. - Dr. Adrian Rogers
|
|
|
|
|
John P Harris wrote: it doesn't work. is anything wrong with the above approach?
Dunno, might be caused by isolation[^].
I are Troll
|
|
|
|
|
IMO the problem is the destination document isn't the main window of the target app; in Word you would CTRL/V in the document pane, not just anywhere inside the whole window.
Suggestion: for simple apps it could work; for MS Office, I'm afraid the official way (through Primary Interop Assembly is what you need.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
i have to import xml document having size more than 10GB in Sql Server database. i also have to do XSD Validation before Processing and maintain transaction. Please suggest me the best way to do the same. should i use SSIS packege? is it capable of Processing such large document? or Do i have to use c# coding to accomplish this task?
|
|
|
|
|
Do not repost again. you have already asked this question in database forum. here[^]
♫ 99 little bugs in the code,
99 bugs in the code
We fix a bug, compile it again
101 little bugs in the code ♫
|
|
|
|
|
Hi Developers,
In CA1822 , microsoft performance warnings ask some methods to static.It wont be an issue if we make a private method static , but an issue pop-ups when we make a public method , or an interface implementation to static.It will severely affect the logic.Is there any alternate solution ?
|
|
|
|
|
As the method in question isn't accessing instance data it should not be part of an interface anyway.
MSDN[^] says:
It is safe to suppress a warning from this rule for previously shipped code for which the fix would be a breaking change.
|
|
|
|
|
Yes , those are unused methods which are kept for the future usage.
Thank You
|
|
|
|
|
Don't worry too much about that, it's only a warning.
If a non-static method don't use any instance-level method or property, FxCop tells you that there are no reasons that method should not be static, and suggest you to make it static.
But, if that method is part of an interface implementation (or exposed publicly and alraedy used from other methods), there ARE reasons that should not be static, so you should ignore the warning.
If you want, you can use the SuppressMessage attribute to avoid getting the warning for specific methods.
|
|
|
|
|
If your app compiles without errors and runs without crashing, you can safely ignore pretty much any warnings FXCop generates. It just provides suggestions on "best practice for coding style. It is not intended to be an omnipotent oracle of "how to code". Throw away the crutch, and learn to stand on your own two feet.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
I agree with this answer.
I am *SUPER* anal about my code formatting. I mean, really, super duper anal. So I thought FxCop would be my new BFF. Sadly no. I found most of its demands to be too pretentious for my tastes and quickly uninstalled it.
|
|
|
|
|
Hi. I want to change the function of each keyboard key.I want my application to listen to key press events globally and change key value. for example when i press 'A' while writing in notepad, my Application should see the key press event before Notepad and send Letter B to the active application. I've managed to listen the key press event globally, what i want is to block other applications from getting key press events?
|
|
|
|
|
Which one of the suggestions in response to your earlier question[^] did you try?
At what point did you get stuck?
What code caused which error message?
Ciao,
luker
|
|
|
|
|
Hi,
I've been searching for days for a way to find the exchange mailstore on any exchange server given only it's name.
For e.g I have an exchange server EXSRV01, I have nothing to tell me if it is running exchange 2000,2003, 2007 etc. All I need to find is the size of the mailstore.
I was thinking I could just get the edb (and slv if it exists) file sizes, but then I don't know where they are stored because it could be stored in it's default location, or on a specific partition etc.
Is there a 'using' directive that would give me access to anything that will help?
If not, am I on a goose chase?
Thank you for any help 
|
|
|
|
|
|
I have the following class:
public class WebServer
{
private readonly TcpListener _listener;
private readonly Thread _listenerThread;
public WebServer()
{
_listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 80);
_listenerThread = new Thread(ListenForClients);
}
public void StartListening()
{
_listenerThread.Start();
}
private void ListenForClients()
{
_listener.Start();
while (true)
{
TcpClient client = _listener.AcceptTcpClient();
var clientThread = new Thread(HandleClient);
clientThread.Start(client);
}
_listener.Stop();
}
private void HandleClient(object client)
{
var tcpClient = client as TcpClient;
var clientStream = tcpClient.GetStream();
var encoder = new ASCIIEncoding();
var message = new byte[4096];
while (true)
{
int bytesRead = 0;
string fileToGrab;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
string msg = encoder.GetString(message);
Console.WriteLine("Client {0} connected", tcpClient.Client.LocalEndPoint);
Console.WriteLine(msg);
string[] parts = msg.Split(' ');
fileToGrab = parts[1];
}
catch
{
break;
}
if (bytesRead != 0)
{
if (fileToGrab == "/") fileToGrab = @"/index.html";
else if (!File.Exists(Environment.CurrentDirectory + fileToGrab))
{
fileToGrab = @"/error.html";
}
byte[] buffer = File.ReadAllBytes(Environment.CurrentDirectory + fileToGrab);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
string serverIp = "From server " + _listener.LocalEndpoint;
clientStream.Write(encoder.GetBytes(serverIp), 0, serverIp.Length);
clientStream.Flush();
break;
}
}
Console.WriteLine("Client {0} closed",tcpClient.Client.LocalEndPoint);
tcpClient.Close();
}
}
That is used to host a small web-server for the browser to connect to and receive data.
It works fine in a console application:
static void Main()
{
WebServer server = new WebServer();
server.StartListening();
}
But in a windows forms app:
public partial class Form1 : Form
{
private readonly WebServer _server;
public Form1(WebServer server)
{
_server = server;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
_server.StartListening();
}
}
...When the button is pressed to turn it on, when connecting it only receives the client data, but the client does not receive the server data.
I dont know why, something to do with "[STAThread]" ?
Thanks 
|
|
|
|
|
There's a simple way to test that: put [STAThread] on your console app. However, I'm fairly sure I've served TCP from within a WinForms app without problems in the past.
I don't immediately see the problem.
You should put some logging in the socket error catch block, as well as breaking out of the loop.
Actually never mind that, you should use the asynchronous socket methods (BeginReceive and BeginAccept), instead of creating a thread for each client. (Also, your accept thread will never terminate.) Take a look at my Sockets library[^] for an example if the MSDN docs don't make it clear enough (specifically the ClientInfo class which uses asynchronous receive, and the Server class which uses asynchronous accept).
|
|
|
|
|
Hi. I've created a click event to my windows notify icon. but when i click the icon on the task bar, i lose focus from my current window. for example i am writing something on note pad. then when i click the notify icon i dont want to lose focus from my notepad window, just like windows language bar. does anyone know how to do that? TNX in advance
|
|
|
|