I am writing a C# application that can control, monitor and upgrade firmware on 3 different hardware products. These products are accessed through registers and every once in a while registers are made obsolete or added (at the end). In my C# application I have a table of the latest versions this version of the C# application supports, e.g.:
If I try to communicate with a PRODUCT_1 of version 184.108.40.206 in the example above, my C# application would display an error message asking the user to obtain a newer version of the C# application.
I feel it would be nice to also give the actual C# application some kind of version or unique identifier. Of course, in the example above I could call it "version" 220.127.116.11 18.104.22.168 22.214.171.124, but as I add more products this "version" would become very long. I could use the same versioning format as the products (W.X.Y.Z), but is becomes difficult to manage when several persons work on separate branches on the different products in Git. I'm thinking that calculating a 4-byte CRC/hash on the supported versions would be a better option, but then I lose chronological information (it becomes hard to know which version is the latest version). So that would need to supplemented with a timestamp of some sort. Please note that I want the version/hash/time stamp to be compiled into the C# so it can be shown in a little "About"-box. Does anybody have any suggestions?
Another thing I was thinking of is to include the entire Visual Studio source code of my C# application project as a zip-file that can be downloaded from within my C# application by pressing a button "Get This Application's Source Code", that way I could always get the source code of an .exe file and then I could iterate through Git to find the most appropriate commit. Does anybody have experience with this and can share experiences?
I use a "minimum supported version" for new functionality. That version refers to the executable, which has it's build-number (part of the version) updated autmatically. When checking if something is available for the "current" version, I just check the first three and ignore the build altogether.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
Please note that I want the version/hash/time stamp to be compiled into the C# so it can be shown in a little "About"-box.
You could use attributes for that matter. It would allow you to insert metadata in the executable about which version is supported for which product. Attributes (C#)[^]
Then, you can either access this metadata at runtime using reflection (and format proper error messages, for example), or inspect the assembly with ildasm.exe and get these informations.
"Five fruits and vegetables a day? What a joke!
Personally, after the third watermelon, I'm full."
I am working to fix the issue of Cross Side Scripting-XSS in asp.net with C#. team is using the burp interceptor to inject the script like this %uff1cscript%uff1ealert%uff08123456%uff09%uff1c/script%uff1e but I am tried several ways to encode this text to find out the html but I am not able to do it tried antixss and html encode but its not working.
please let us know how to handle these codes to fix the issue
A way to manage this is by adding the content-security-policy response header. If your site only uses internal scripts, you would set the script-src to self. Now, what happens if you rely on cdn's? Fortunately, these can be whitelisted in the same header. Ultimately, you would end up building a response header that looks like this:
Disabling autoplay won't be enough to protect you from a malicious USB drive.
An attacker can manipulate the firmware[^] so that the drive pretends to be a keyboard or a network adapter. They can then send commands to your computer, or extract data, without having to run any software.
Ow ya, did not think about the USB-killers and the modified firmware thing. That makes it much more harder to protect against bad USB with a software, it would make it impossible for the USB killer part.
Guess you could protect against the USB-Killer attack by having a external device you can use as a sacrifice thing between the PC and the USB, it must be able to handle the surge though.
Guess we have to stick to not allow it then unfortunately.
To add to what Richard says, you get no real protection with a basic software solution: many computers are configured to allow "boot from USB" for recovery purposes, and even if disabling it in Windows works, if it has a bootable partition it stands a good chance of taking over the PC completely the next time it is turned on as that is part of the BIOS and before Windows even starts to load. The same problem exists with CD's (where fitted) - they can also be selected as a bootable device.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
AntiTwitter: @DalekDave is now a follower!
I'm new to C# and oop (though I have coded in Autoit for more that a decade, so I do have a basic understanding of coding) , I usually use google to get answers, but this question I haven't been able to find an answer to.
I have created a simple form with 2 text boxes and a button. The form is in a class library, course I want to use it in several programs. In the same library I have another class file, that I want to handle all calls to my lib.
My problem is that I don't know how to "pop" the form, and how to use the button to get the input data from the text boxes, and then handle that data within my class file.
I want to use the library to handle the main programs license.
My idea is:
User launches the main program.
The program calls my license lib -> the lib checks if a license for the program exists in the database, if not "pop" the form to allow the user to enter User Name and License.
When the user clicks the form button, the lib calls a license server to check if the license is valid, if the lic is valid it writes it to the database, and shows a License is Valid message to the user.
Else if the license exist, continue the main program and drop the lic lib.
I hope that it clear what I try to achieve, and that some one can help point me in the right direction
The form is in a class library, course I want to use it in several programs.
Why not just keep the controls in the library and access the controls in the Windows Forms application? That would solve almost all of your problems.
I want to use the library to handle the main programs license.
Library cannot do anything on its own. Yes, you can contain the code for the logic in the library, but it would be your own application that triggers the functions and calls them to process something. Using a library, you will still need to process the output of the functions and then either continue the program, or terminate the process—as per licensing and other requirements.
There are a couple of articles on software licensing on CodeProject (search in top right corner), in case you want to see how to apply these features in a software application.
"pop" the form to allow the user to enter User Name and License.
Seems like a flow, why not execute the Windows Forms process itself, and "pop" it so user can input the details. This will be helpful, you can use Process class to start the process, and handle the output manually. If this program of yours is a Windows Forms app, then you can simply create the instance of the Form and show it.
HI I am using this code to collect all data from datagrid and storing to list string.
this works perfectly except 1 problem. it only give me cell content to where the columns are visible. meaning if I have 200 rows and in my screen only shows 25 rows, what I can store to my string is only for 25rows. if I scroll, again it only give me values to the visible rows. anybody can give my a clue or give an advise why is this happening. or did I mis a for loop inside or foreach after declaring object?
var rows = GetDataGridRows(dataGrid);
List<string> s = new List<string>();
foreach (DataGridRow row in rows)
var column = dataGrid.Columns;
var tb = column.GetCellContent(row);
var r = (DataRowView)tb.DataContext;
Object obj = r.Row.ItemArray;
ids = string.Join(",", s);
i used code to getrow.
public IEnumerable<datagridrow> GetDataGridRows(DataGrid grid)
var itemsSource = dataGrid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
var row = dataGrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (null != row) yield return row;
Last Visit: 18-Feb-20 22:22 Last Update: 18-Feb-20 22:22