|
|
|
I found the problem. I needed to use the other version of OpenSubKey (and pass it true). The RegistryPermission code isn't even needed:
RegistryKey key = Microsoft.Win32.Registry.CurrentUser;
string keyName = "Software\\" + Application.CompanyName + "\\" + Application.ProductName + "\\Test";
RegistryKey subKey = key.OpenSubKey(keyName, true);
RegistryPermission rp = new RegistryPermission(RegistryPermissionAccess.Write, "HKEY_CURRENT_USER\\" + keyName);
if (subKey != null)
subKey.DeleteValue("DeleteMe");
Regards,
Alvaro
Can I ask you a question?
|
|
|
|
|
Use regedt32.exe and see if the current use actually has rights to the key.
Also instead of using
RegistryKey subKey = key.OpenSubKey(keyName);
use :
RegistryKey subKey = key.CreateSubKey(keyName);
using CreateSubKey will give you a writable value. I think.
|
|
|
|
|
Hi,
I am trying to get the Hash Code for a string through MD5 classes in C# but the value that it is printing is not the same as being given by another developer who has used md5 algorithm written in javascript.
Here's the code:
string str = val[1];
// First we need to convert the string into bytes, which means using a text encoder.
System.Text.Encoder enc = System.Text.Encoding.UTF8.GetEncoder();
// Create a buffer large enough to hold the string
byte[] unicodeText = new byte[str.Length * 2];
enc.GetBytes(str.ToCharArray(), 0, str.Length, unicodeText, 0, true);
//Now that we have a byte array we can ask the CSP to hash it
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(unicodeText);
//Build the final string by converting each byte into hex and appending it to a StringBuilder
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i=0;i
|
|
|
|
|
The problem you are having is with your population of your byte array. To see this try using both ways and look at the output of Convert.ToBase64String(bytearray) you will see they are both the same however yours adds on extra characters.
Doing this should fix it:
-- Replace
byte[] unicodeText = new byte[str.Length * 2];
enc.GetBytes(str.ToCharArray(), 0, str.Length, unicodeText, 0, true);
-- With
byte[] unicodeText = Encoding.UTF8.GetBytes(str);
|
|
|
|
|
I'm having a strange problem. I have a series of classes that do some processing and then generate a control. These classes are stored in a collection.
When I add the class to the collection I add a handler so i know to update the controls when the class data changes. When the generated control fires an event the class picks this up and responds correctly. The class then fires an Updated event.
The classes fire their events but I never get the event fired in the control that hosts the classes collection.
Any ideas?
|
|
|
|
|
Apologies for the slightly vague title of this thread, but I was hard pushed to find a decently descriptive title.
I am attempting to convert a byte array into a string, which in itself if relatively simple - The output strings look something like this :
1.3.6.1.4.1.1
The way I am doing this at the moment is fairly simple :
char[] cha = Encoding.ASCII.GetChars(byte_array);
Then I convert each cha[*] to a string, and voila, I have my full string.
The problem is that if the value of one of the nodes (between the '.') is greater than 127 it is converted to a 2-byte signed integer value. So if the string I am after is :
1.3.6.1.4.1.6347
My rather simple method of converting is useless, these signed integer values can (and will) appear at any of the nodes in the string - so I am looking for some sort of guidance on create a parser to acheive this.
p.s Just incase your curious, I am attempting to decode SNMP OIDs
post.mode = signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
Maby this will work
<br />
char[] chars = new char[theByteArray.Length];<br />
for (int i=0; i<theByteArray.Length; i++)<br />
chars[i] = (char)theByteArray[j];<br />
<br />
String theString = new String(chars);<br />
I don't know if it is faster or if this is the standard of copying byte ararys to strings, but I have used it ant it works for me.
/M
|
|
|
|
|
That code works as long as there are no 2-byte signed integers in the byte array.
Thats the problem I have, I cant find a way of parsing through the byte array to find these possible signed values.
post.mode = signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
Your problem is caused because the ASCII enconding uses only 1 byte per char.
I don't know what SNMP uses, wheter Unicode, UTF-8, UTF-16, etc, check your docs. If using, e.g., Unicode, try this:
char[] cha = Encoding.Unicode.GetChars(byte_array);
The Encoding class has also a getEncoding method which supports lots of different encodings.
Help me dominate the world - click this link and my army will grow
|
|
|
|
|
I have been pulling my hair out trying to get AxBrowser and mshtml components to work properly, if anyone can help me out, it would be much appreciated...
First of all, what I am trying to achieve is basically to get AxBrowser to print properly using:
AxWebBrowser.ExecWB( SHDocVw.OLECMDID.OLECMDID_PRINT, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER, ref obj, ref obj );
where obj = null.
I have two AxBrowsers running at the same time, one that is hidden from the user's view (but not set to Visible=false since this causes an exception to be thrown everytime you try to print). I dynamically generate html which is then saved to file via the use of the StreamWriter class, then I call AxBrowser.Navigate(...) [for the AxBrowser that the user can actually see] to the new file.
If they want to print it out, they can (without problems using the above mentioned line of code). However, these things that I am generating for the user to see are created from an XML document that is run through XSL. Long story short, the XML file contains different items that get transformed in html, and the user is allowed to print ALL the items that are available on the XML document. Now, to do this, I generate all documents in the background and display it on the other AxBrowser (the one which the user cannot see so that the AxBrowser that they CAN see doesnt flicker and change documents in front of them), then tell it to print.
The problem is, after I save the html to file, tell the browser to navigate to it, then call the ExecWB print command, it seems to print out it's HTMLDocument's previous html content.
For example, the "hidden" AxBrowser is first initialized and navigated to "about:blank". The user clicks on Print All, so my code generates the html, saves it, tells the "hidden" AxBrowser to navigate there, then calls the ExecWB print command. Instead, what it DOES print out is a blank page! Then if the user tries to Print All again (but selecting a different display format), AxBrowser prints out the PREviously generated document.
Is there any explanation for this behaviour??
Also, there is the issue with AxBrowser always printing out the default headers and footers. There doesn't seem to be an easy way of setting the header/footer text WITHout modifying the registry. Microsoft has an article on how to do it via the ExecWB command, however it is in C++ at:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q267/2/40.ASP&NoWebContent=1[^]
I am very unfamiliar with C++ and just need a way to do what that code suggests, but in C#. Does someone have another way of doing this? I know that you can prompt the user to edit the page settings, but thats not what I want to do. The only prompting I want done is for the user to select the printer that they wish to print to.
Thanks for any help!
- mephist
|
|
|
|
|
Hi all
I have a speciffic task of which i do not know how to start on.
The task is to create a virtual drive (like a ram drive og deamon tools). Through this drive files are to be saved and loaded like a normal drive, but the "files" are created runtime by my program. The idea is that the program accessing the drive can not tell the diffrence.
Here is what i need:
- How to register the drive with windows.
- How to create a connection between the drive and my program.
- Which drive operations to implement in my program.
Thats all
Thanks
Jens
|
|
|
|
|
This is device driver material and you are asking it in a C# forum. You can't get there from here in languages at this level of abstraction. Sorry.
--
-Blake (com/bcdev/blake)
|
|
|
|
|
if you dont want to create a drive you could create a shell extension.
I think theres is an article on here with regards to that.
Try having a look at
Shell extension framework[^
James Simpson
Web Developer
imebgo@hotmail.com
|
|
|
|
|
Sounds interesting, i'll look further into that, thanks!!!
Jens
|
|
|
|
|
Sounds interesting, i'll look further into that, thanks!!!
Jens
|
|
|
|
|
What is the technical difference between defining a string this way:
<br />
string s = "this is my string";<br />
and this way?
<br />
string s = @"this is my string";<br />
|
|
|
|
|
using the @ means you don't have to escape the \ character eg.
string s = "\\\\Server\\folder";
it the same as
string s = @"\\Server\folder";
Grant @ Loki
|
|
|
|
|
sheesh, you beat my by two minutes.... hehe... that's what I get for reading down the page first
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
Mike Ellison wrote:
What is the technical difference between defining a string this way:
string s = "this is my string";
and this way?
string s = @"this is my string";
Well the first would try to escape certain characters followed by a slash
string s = "this is a line \n with a newline embedded";
string s = @"this is a line \n with a slash n embedded";
The @ sign tells the compiler "this is a literal string, don't escape the characters after the slash".
Hope this helps,
Nathan
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
|
|
Mike,
It looks like everyone has answered you question here. I just wanted to add that strings that are defined with the "@" sign are called verbatim strings.
-Nick Parker
|
|
|
|
|
Thanks, Nick. Every bit of useful information helps!
|
|
|
|