|
Other than putting a manifest in to request elevation to admin level for your app, no. If you could just inject .reg files, this would be a huge security hole.
The generally accepted guidance is not to use the registry. Rather, you should look to use config files.
|
|
|
|
|
IF I understood your question correctly, you can use Registry[^] class to read and write values in registry. It's up to your application where the values come from so if you decide that you read an existing file (.reg for example) then loop through it and put the values in proper places.
|
|
|
|
|
How very archaic, using the registry. As POH suggested use your own config file, you won't piss of your user by nagging him for permissions and you have complete control of the file.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
There is a solution, and it is close to your original idea.
You use the built-in functionality to read the values from the registry, write them into a .reg file (that's your code then).
For writing the data to the registry, you start a process with elevated priviledges (e.g. regedit with the filename as a parameter).
For starting a process with elevated rights from a normal .Net application, see e.g. http://chrison.net/UACElevationInManagedCodeStartingElevatedProcesses.aspx[^]
|
|
|
|
|
I wonder if someone could help. I need to code a program which simulates throwing a dice three time with random values from 1 to 6.
The output should contain the values of the dice and the probability for this combination to occur.
Am 100% new to C# so looking for some help to get started.
|
|
|
|
|
This sounds like a homework so the obvious question is, what have you tried so far?
Member 11392172 wrote: The output should contain the values of the dice
For example this[^] returns a lot of sources you can use as a starting point
Member 11392172 wrote: probability for this combination to occur
Not sure what you mean with the combination. If you mean that 1 and 2 or 5 and 6 occur the probability would be the same. However, if you mean that what is the probability for a sum to occur (for example 9) then you have possibilities like 3&6, 4&5, 5&4, and 6&3. For example, have a look at this[^]
|
|
|
|
|
Hi and thanks for the reply. It's actually for my son but it's a long long time ago since I did any coding and not in C#
|
|
|
|
|
Well, the actual rolling of the dice involves a random number generator. What you want to do is to instantiate an instance of the Math.Random class, and use this as the base of your rolls. You want to do this away from the code that actually gets the numbers because you don't want to create a new instance each time. An example of this might be:
public sealed class Dice
{
private Random random = new Random();
public List<int> DiceRolls(int count)
{
List<int> rolls = new List<int>();
for (int i = 0; i < count; i++)
{
rolls.Add(random.Next(1,7));
}
return rolls;
}
} We do this because Random uses the system time to generate what's called a seed number. Now, if we had the instantiation of random inside the loop, chances are that you would be entering the same seed value at least some of the time.
|
|
|
|
|
Hello,
I'm working on an implementation of web-apis that return xml responses. I need to deserialize them into objects and objectlists.
I've already did it with one type of structure, but struggling on an other. When the needed xml data starts directly after the root tag then everything goes fine, but if there are some other tags in between or the structure gets more complex, then it doesn't deserialize and my list stays empty.
My question therefore is, how can i deserialize parts of xml that maybe come some tags later than the root and ignore the rest.
To give a better picture to what i want to achieve i have uploaded a small test application with testing xml files on my dropbox account for you to download: Link to test-application.
One of them works, the other one is the one that should also work.
Info: Testapp is written using: #Develop 5, C# 5 and .Net-Framework 4.5.2
Working XML:
<response>
<result first="Value 1" second="5" third="122"/>
<result first="Value 2" second="9" third="13"/>
<result first="Value 3" second="12" third="4"/>
</response>
Not working XML:
<response>
<method>something here</method>
<answer>
<result first="Value 1" second="5" third="122"/>
<result first="Value 2" second="9" third="13"/>
<result first="Value 3" second="12" third="4"/>
</answer>
</response>
The problem is, that i do not need the information <answer> and or <method> the only data that really matters is in the <result> tag. I would like to ignore the rest.
Thanks and regards
Antonio
|
|
|
|
|
When you have variable formats, I suspect that the best way is to implement your own parser, using the low-level functions in System.Xml:
1. When detecting a new tag, call a constructor for the class representing the tag, passing the XML stream to the constructor.
2. Using the low-level XML APIs, the constructor should read the entire tag, placing the XML stream's cursor at the end of the tag.
3. Repeat until all the stream has been read.
Note that a specific class constructor may do nothing but advance the cursor to the end of the tag (the equivalent of ignoring the data). However, to my knowledge there is no way of doing so without actually reading (and discarding) the data from the XML stream.
In your second example:
a. <response> - call the response constructor
a.1 <method> - call the method constructor (note that this may do nothing other than advance the cursor)
a.2 <answer> - call the answer constructor, passing the XML stream and a pointer to the response instance
a.2.1 <result> - call the result constructor, passing the XML stream and a pointer to the response instance
a.2.2 <result> - call the result constructor as above
a.2.3 <result> - call the result constructor as above
You will obviously have to define classes that match each tag. With a bit of thought, it should be possible to design classes that insert the desired data (and nothing else) into the response instance.
I have used this approach with success on multiple projects.
|
|
|
|
|
Daniel Pfeffer wrote: You will obviously have to define classes that match each tag.
This is what i want to avoid. I thought that maybe there must be an [XmlIgnore] attribute or something else, where i can tell the serializer to skip certain parts of the xml while deserializing until it comes to the interesting part of the xml.
I wonder why i can give [XmlType] if it is not used finding the right tags to deserialize.
[Serializable]
[XmlType("result")]
public class XmlItem
I would like to be able to say here, search for a tag called <answer> and skip everything else
on your way...
[Serializable]
[XmlType("answer")]
[XmlInclude(typeof(XmlItem))]
public class XmlList: List<XmlItem>
Here I tell the Serializer what the rootnode of the xml is...
XmlSerializer deserializer = new XmlSerializer(typeof(List<T>), rootNode);
|
|
|
|
|
AFAIK, the XML serialization code works by examining the class' members, and outputting code to read / write them. This works very well for fixed-format XML fragments, but fails when you want to parse variable fragments.
In your example, the result tag has two possible formats. The XML deserializer has no way of knowing which format is to be used, and therefore it reports an error when trying to parse the second format.
I know of no way to define variable fragments using C# attributes. If you control both ends of the link, you might try creating a separate tag for each XML message type and ensuring that each XML message type has a unique class associated with it. You might have XML classes inherit from a common interface, so that the same data may be returned from each:
interface XmlBase
{
IList< XmlResult > Results { get; }
}
[Serializable]
[XmlType("response1")]
class XmlResponse1: XmlBase
{
}
[Serializable]
[XmlType("response2")]
class XmlResponse2: XmlBase
{
}
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|
|
Oh, I think I've been unclear.
It's not the same implementation for both examples.
It was just a showcase for two different xml files, that both will be handled in their
own implementation.
At least i don't know how to handle exmple 2 as example 1 works fine.
Here again a different xml example with the same problematic
With my kind of implementation i'm able to deserialize an xml like this:
="1.0"
<root>
<project project_id="16576">
<project_id><![CDATA[</project_id>
<name><![CDATA[</name>
<active><![CDATA[</active>
</project>
<root>
<root>
<project project_id="16577">
<project_id><![CDATA[</project_id>
<name><![CDATA[</name>
<active><![CDATA[</active>
</project>
<root>
I have an class List<item> with an class Item
and in List<t> i have the method to deserialize and with the given root information,
and the given <xmltype> and so on I'm able to deserialize every xml file, that has a list of tags
like above...
Now I have an xml file (complete different file and implementaion, means i would write other two classes for it)
that doesn't start directly with the needed list of data after the <root> node but later in the hierarchy
example again:
<rootX>
<data1>some info here</data1>
<data2>some info there</data2>
<coolList>
<item kw="online email marketing" position="14" competition="0" traffic="5" url="http://www.marmato.de/"></result>
<item kw="listbroking" position="20" competition="50" traffic="20" url="http://www.marmato.de/leistungen/e-mail-marketing/listbroking.html">
</coolList>
I'm interested in the <coollist> and it's items. So how do i have to change my implementation to get out this list?
I hope i could clarify.
|
|
|
|
|
The only way for the XML deserializer to read a <rootx> tag is to have a class with the correct definition, e.g. XmlRootX, which defines the entire tag.
If you think about it, the deserializer has to work this way. If it worked according to your suggestion, there would be no way to tell the difference between the valid XML code above and invalid XML code such as:
<rootX>
<data1> some info here </data1>
<badData327> more info here </badData327>
<coolList>
<item ... />
<item ... />
</coolList>
</rootX>
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|
|
I looked over your "test app" but did not run it.
Your class definitions and the way you are looking at the xml appear flawed (e.g. the "response" is a high level container that contains a "list"; "response" is NOT a "list" as your class definitions seem to imply).
It would have been easier to "Edit | Paste special | Xml as classes" in Visual Studio. Doing that, I got the following for your "not working XML":
[System.Xml.Serialization.XmlTypeAttribute( AnonymousType = true )]
[System.Xml.Serialization.XmlRootAttribute( Namespace = "", IsNullable = false )]
public partial class response {
private string methodField;
private responseResult[] answerField;
public string method {
get {
return this.methodField;
}
set {
this.methodField = value;
}
}
[System.Xml.Serialization.XmlArrayItemAttribute( "result", IsNullable = false )]
public responseResult[] answer {
get {
return this.answerField;
}
set {
this.answerField = value;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute( AnonymousType = true )]
public partial class responseResult {
private string firstField;
private byte secondField;
private byte thirdField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string first {
get {
return this.firstField;
}
set {
this.firstField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public byte second {
get {
return this.secondField;
}
set {
this.secondField = value;
}
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public byte third {
get {
return this.thirdField;
}
set {
this.thirdField = value;
}
}
}
|
|
|
|
|
Hello,
I am using IE11
I would like to know the registry entries to check/uncheck the Properties "Use TLS 1.0, Use TLS 1.1, Use TLS 1.2. Also, the registry entry for uncheck/check the "Display intranet sites in compatibility view" under Tools/Compatibility Settins
Thanks for your help,
|
|
|
|
|
I don't see anything to do with C# in this question.
|
|
|
|
|
Well, i did the setting for IE9 using C#. If i do not know the entries i cannot move forward though. Thanks,
|
|
|
|
|
Did you know that you can easily find this information out for yourself? Use a utility such as RegShot[^] to take a snapshot of the registry, then make your changes. Take another snapshot, and it will output the items that changed.
|
|
|
|
|
|
Following is the working code which decodes UUEncoded information to the correct hex value:
Code:
string input = "MTA0ODU3NjAA=";
byte[] decoded = Convert.FromBase64String(input.TrimEnd(new char[] { '=' }));
String value = ASCIIEncoding.ASCII.GetString(decoded);
int output = Convert.ToInt32(value);
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
Output: temp = "0000A0";
I am looking for help to reverse this process. Input: "0000A0" and get output as: "MTA0ODU3NjAA", since '=' are used for padding only.
|
|
|
|
|
And?
What help do you need?
What have you tried?
Where are you stuck?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
I wrote the initial logic of converting the UUEncoded data to hex value. This hex value is being used in C# code.
Now I want to save it back as UUEncoded data. I am not sure how to reverse engineer it. Need some advise.
|
|
|
|
|
You wrote this:
string input = "MTA0ODU3NjAA=";
byte[] decoded = Convert.FromBase64String(input.TrimEnd(new char[] { '=' }));
String value = ASCIIEncoding.ASCII.GetString(decoded);
int output = Convert.ToInt32(value);
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
And you can't reverse it?
Um. What part of the two relevant lines can't you understand?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
This is the one I am not able to reverse:
string temp = String.Format("{0:X02}{1:X02}{2:X02}", (output & 0xFF0000FF) >> 0, (output & 0xFF00FF00) >> 8, (output & 0xFFFF0000) >> 16);
Not good with these conversions.
|
|
|
|