|
Depends on what the app does, and how wide it's market is. If I was, for example, about to release Microsoft Office, I'd want to obsfucate. We do a product into a niche market, which is not very technical, we don't bother to obsfucate it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks for your reply.
Well, it's an imaging app aimed on digital photography. The market we want to enter is quite small, but we don't kknow if there is something to be afraid of.
|
|
|
|
|
ltinka wrote: No - we can publish some source code (even if the application is commercial), either. There are still "good boys", which tell us, where are the security bugs in our code
An obfuscator can hide bad code. Make sure your code is public ready before selling it, else you might land up on the dailywtf.com
xacc.ide-0.1 released! Download and screenshots
|
|
|
|
|
Imaging application implies you might have some algorithmic stuff in there the workings of which you'd like to keep to yourself. I would if it were a commercial venture anyway. It's a bit of a nightmare really because its really is so simple to pull apart a .NET assembly and leech its contents. If you haven't done so already take a look at Lutz Roeder's .Net Reflector (http://www.aisto.com/roeder/dotnet/[^]) as a means to reconstruct your source - it's depressingly easy.
I don't see the need to protect the general framwork of an application - anyone can recreate this, but the algorithmics I see a bit differently - have you considered providing these in non-managed code?
Regards,
Rob Philpott.
|
|
|
|
|
|
While calling the SqlTransaction method Rollback(), I'm getting a SqlException for Timeout Expired. I've looked all over the SqlTransaction class and don't see a way to set a timeout value for the Rollback command. Does anyone know how to increase the timeout value for this command?
|
|
|
|
|
Hi Mark,
I am not sure.it can be related to the timeout of the sqlcommand instead of sql transaction class.
rakesh
|
|
|
|
|
Hi,
Can any one tell me how to override the System.Windows.Forms.Label.CanSelect property?
Thanks!
Anne
|
|
|
|
|
Why would you want to? Selecting a label control at run-time isn't what I would call an intuitive thing to do.
The property just returns the value of the controls ControlStyles "Selectable" value. If you want to change this so the control is selectable, you'll have to create you're own Label control, inheriting from Label, and just set its Selectable ControlStyle to true.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you so much for your response, Dave.
Sorry for being so dumb...
Here is the inherited label we want selectable, could you show me how I would do it:
Thanks for any help you can give.
Anne
<br />
using System;<br />
using System.Collections;<br />
using System.ComponentModel;<br />
using System.Drawing;<br />
using System.Data;<br />
using System.Windows.Forms;<br />
using System.Configuration;<br />
<br />
namespace Arb.Controls.Win<br />
{<br />
public class arbTextLabel : System.Windows.Forms.Label<br />
{<br />
private System.ComponentModel.Container components = null;<br />
<br />
public arbTextLabel()<br />
{<br />
InitializeComponent();<br />
<br />
<br />
}<br />
<br />
protected override void Dispose( bool disposing )<br />
{<br />
if( disposing )<br />
{<br />
if(components != null)<br />
{<br />
components.Dispose();<br />
}<br />
}<br />
base.Dispose( disposing );<br />
}<br />
<br />
#region Component Designer generated code<br />
private void InitializeComponent()<br />
{<br />
components = new System.ComponentModel.Container();<br />
}<br />
#endregion<br />
public override Font Font<br />
{<br />
get<br />
{<br />
return getFont();<br />
}<br />
}<br />
<br />
public override Color ForeColor<br />
{<br />
get<br />
{<br />
return getForeColor();<br />
}<br />
}<br />
<br />
<br />
<br />
public Font getFont()<br />
{<br />
string N = ConfigurationSettings.AppSettings["TextLabelFontName"];<br />
string S = ConfigurationSettings.AppSettings["TextLabelFontSize"];<br />
string FS = ConfigurationSettings.AppSettings["TextLabelFontStyle"];<br />
string GU = ConfigurationSettings.AppSettings["TextLabelFontGraphicUnit"];<br />
string GRI = ConfigurationSettings.AppSettings["TextLabelFontGRI"];<br />
<br />
N = (N==null)?"Verdana":N;<br />
S = (S==null)?"9":S;<br />
FS = (FS==null)?"Regular":FS;<br />
GU = (GU==null)?"Point":GU;<br />
GRI = (GRI==null)?"0":GRI;<br />
<br />
return new System.Drawing.Font(N,(float)(Convert.ToDouble(S)),Helper.getFontStyle(FS),Helper.getGraphicUnit(GU),Convert.ToByte(GRI));<br />
}<br />
<br />
public Color getForeColor()<br />
{<br />
string r = ConfigurationSettings.AppSettings["TextLabelForeColorR"];<br />
string g = ConfigurationSettings.AppSettings["TextLabelForeColorG"];<br />
string b = ConfigurationSettings.AppSettings["TextLabelForeColorB"];<br />
<br />
r = (r==null)?"0":r;<br />
g = (g==null)?"0":g;<br />
b = (b==null)?"0":b;<br />
<br />
return System.Drawing.Color.FromArgb(Convert.ToByte(r),Convert.ToByte(g),Convert.ToByte(b));<br />
}<br />
}<br />
}<br />
<br />
<br />
|
|
|
|
|
AnneThorne wrote: public arbTextLabel()
{
// This call is required by the Windows.Forms Form Designer.
InitializeComponent();
// TODO: Add any initialization after the InitializeComponent call
}
public arbTextLabel()
{
InitializeComponent();
this.SetStyle(ControlStyles.Selectable, true);
this.UpdateStyles();
}
You're control will then be able to receive the input focus.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thank you very much Dave!
|
|
|
|
|
hi,
I am trying to call a dll fn that takes pointer to array as argument form my c# app.
I am doing the following way but its not working.
<br />
DISABLETOUCHSCREENDLL_API int fnDisableTouchScreenS(int *iscrn,int *iEnableDisable)<br />
{}<br />
<br />
[MarshalAs(UnmanagedType.LPArray)]<br />
private int[] iscrno = new int[MAX_SUPPORTED_SCR];<br />
[MarshalAs(UnmanagedType.LPArray)]<br />
private int[] iEnableDisable = new int[MAX_SUPPORTED_SCR];<br />
<br />
[DllImport( "DisableTouchScreenDLL.dll", CharSet = CharSet.Unicode )]<br />
public static extern int fnDisableTouchScreenS(ref int[] iscrno, ref int[] iEnableDisable);<br />
<br />
int[] s_nos = new int[MAX_SUPPORTED_SCR];<br />
int[] t_fs = new int[MAX_SUPPORTED_SCR];<br />
<br />
for(i=0;i<iScreens;i++)<br />
{<br />
s_nos[i] = i;<br />
t_fs[i] = 1;<br />
}<br />
iscrno = s_nos;<br />
iEnableDisable = t_fs;<br />
<br />
if(fnDisableTouchScreenS( ref iscrno, ref iEnableDisable)==0)<br />
{<br />
System.Console.Write("Success");<br />
}<br />
<br />
The function is returning success, but not doing what is expected.
But I know the dll is working fine...but am I using it right??
|
|
|
|
|
Try the following:
[DllImport("DisableTouchScreenDLL.DLL", CharSet = CharSet.Unicode)]
public static extern int fnDisableTouchScreenS(int * iscrno, int * iEnableDisable);
unsafe
{
fixed (int * ps_nos = s_nos, pt_fs = t_fs)
{
if (fnDisableTouchScreenS(ps_nos, pt_fs))
{
...
}
}
}
|
|
|
|
|
if the unsafe solution worked for you you should be able to use marshalling to pass in the arrays. Do a little research on passing c# int arrays to native dll functions. Good luck!!!
|
|
|
|
|
I've been trying to write to a MySQL db with no luck. Selecting the data and filling the dataSet is no problem. But everytime I try to update, delete or insert I get a concurrency violation. Am I just not mapping the columns correctly?
Database: address
Table: contacts
id int(11) not null auto_increment primary key
fname varchar(20)
lname varchar(20)
phone varchar(15)
Here's the code:
/*
* Created by SharpDevelop.
*
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.Odbc;
using System.Data.Common;
namespace mysql
{
/// <summary>
/// Description of MainForm.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.DataGrid dataGrid1;
private System.Windows.Forms.Button btnLoad;
//
//
private OdbcConnection cnn=new OdbcConnection(@"DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=address;USER=root;PASSWORD=system;OPTION=3");
private OdbcDataAdapter da=new OdbcDataAdapter();
private DataSet ds=new DataSet();
private OdbcCommand selectCmd=new OdbcCommand();
private OdbcCommand insertCmd=new OdbcCommand();
private OdbcCommand updateCmd=new OdbcCommand();
private OdbcCommand deleteCmd=new OdbcCommand();
//
//
void MainFormLoad(object sender, System.EventArgs e)
{
this.da.SelectCommand=this.selectCmd;
this.da.InsertCommand=this.insertCmd;
this.da.UpdateCommand=this.updateCmd;
this.da.DeleteCommand=this.deleteCmd;
//
//table mappings
//
this.da.TableMappings.AddRange(new DataTableMapping[]
{
new DataTableMapping("Table","contacts", new DataColumnMapping[]
{
new DataColumnMapping("id","id"),
new DataColumnMapping("fname","fname"),
new DataColumnMapping("lname","lname"),
new DataColumnMapping("phone","phone")
})
});
//
//select command
//
this.selectCmd.CommandText="select id,fname,lname,phone from contacts";
this.selectCmd.Connection=this.cnn;
//
//delete command
//
this.deleteCmd.CommandText="delete from contacts where (id=@id) and
(fname=@fname) and (lname=@lname) and (phone=@phone)";
this.deleteCmd.Connection=this.cnn;
this.deleteCmd.Parameters.Add("@id",OdbcType.Int,4,"id");
this.deleteCmd.Parameters.Add("@fname",OdbcType.VarChar,20,"fname");
this.deleteCmd.Parameters.Add("@lname",OdbcType.VarChar,20,"lname");
this.deleteCmd.Parameters.Add("@phone",OdbcType.VarChar,15,"phone");
//
//insert command
//
this.insertCmd.CommandText="insert into contacts(fname,lname,phone)
values(@fname,@lname,@phone)";
this.insertCmd.Parameters.Add("@id",OdbcType.Int,4,"id");
this.insertCmd.Parameters.Add("@fname",OdbcType.VarChar,20,"fname");
this.insertCmd.Parameters.Add("@lname",OdbcType.VarChar,20,"lname");
this.insertCmd.Parameters.Add("@phone",OdbcType.VarChar,15,"phone");
this.insertCmd.Parameters["@id"].SourceVersion=DataRowVersion.Original;
}
void BtnLoadClick(object sender, System.EventArgs e)
{
this.cnn.Open();
this.da.SelectCommand=this.selectCmd;
this.da.Fill(ds);
this.cnn.Close();
//
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="contacts";
}
}
}
|
|
|
|
|
like, asp:panel, or asp:button, so that i can change the background image or play a sound or something.
You can have the mouse cursor change so there has to be something.
|
|
|
|
|
You'd be better off asking this question in the ASP.NET or Web Developement forums.
You can't do this with server-side code. It'll have to be done in either HTML or client-side JavaScript.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
I have a separate form that pops up when a homemade button on my base form is pressed. On this second form, I get some info and save it when the same kind of homemade button is pressed. So now I need to dispose of the second form. But I get an error with regards to disposal of the homemade button when I say this.Dispose() :
An unhandled exception of type 'System.ObjectDisposedException' occurred in system.windows.forms.dll
Additional information: Cannot access a disposed object named "myButton".
I'm assuming this is because the base form buttons also use "myButton" and now can't get to it?
Is there some way around this?
Thanks again,
Mel
|
|
|
|
|
If you create form2 from form1, you need to do form2.dispose from somewhere in form1. If form2 is opened modally you can doso after the form2.ShowDialog() call (if you're passing results back as a public member/property be sure to retrieve them first).
|
|
|
|
|
I guess I'm not 100% sure how to do this, so here's what I have so far.
On form1:
private void searchClick(object sender, System.EventArgs e)<br />
{<br />
Searching s = new Searching();<br />
s.ShowDialog();<br />
}
Now the second form pops up, the user inputs data I need, and when btnGo is pressed, I need that form to go away. I tried putting the s.Dispose() after the s.ShowDialog() above, but nothing happens. I then tried, under btnGo_Click() on form2 (aka Searching), to get back to form1, but can't get that working properly either. I'm sure I did this wrong (I had the same basic code as under searchClick above). I haven't figured out how to get between classes very well yet, so all help is greatly appreciated.
By the way, I'd love to be able to pass results back as a public member/property, but haven't figured out how to do that yet either (right now I'm saving them in an xml file). If anyone's bored and could give a quick basic example, that would be wonderful!
Anyway, thanks again!!!
Mel
|
|
|
|
|
Have btnGo_click call this.Close(), and searchClick call s.Dispose() after showdialog.
To pass via properties declare them public and assign the return values prior to calling Close(). access them between showdialog and dispose.
|
|
|
|
|
Hello everybody!!!
iam designing a chat application and i have one problem?
--------------------------------------------------------------------------------------
the problem is :
---------------------
i had implemented text transmission in this way .
client sends a message to another client -------->server receives the message------------> send it to the other client by using his already received networkstream.
but i think this method is not practically cause the size of the server increase with logging of clients cause the server store their networkstream in memory during runtime and suppose we have over 1000.000 clients already connected it will leak the resources of the webserver it is installed on and halt the system
so i thought about designing peer to peer application that the client A demands the ip address first from the co-ordinating server and then use direct connection to the client B and begin chatting but the problem i had found in this architecture is the following:
----------------------------------------------
That There are some private addresses on the internet as follows
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
and for users use DSL their ip addresses are behind NATS or even private addresses can't be seen in the wild on the internet so what do i have to do for making direct connection between clients after getting full information about the remote computer of the other client from the server .
Note:
-------
i had tested the direct connection on the internet with some friends and i found that one from twenty direct connection work with him and the other can't be seen and i had an exception telling me
The Remote host can be resolved or doesn;t found on the internet or the network
something like that in network exception class.
so what can i do to allow this direct connection like most peer to peer applications already used as emule , napster , gnutella or even yahoo messenger and hotmail messenger.
Mess With The Best And Die Like The Rest
|
|
|
|
|
Your problem is multifaceted and will require at least two solutions - or more. For example, in designing a server like you describe you are really creating a message broker or gateway. If Chat I/O is not critical you might consider going connectionless and use UDP. You can still build your own application protocol to handle sequence and drops, and this would let you get around the network stream issue. At the same time with UDP you can use multicast addressing so that one peer can effectively send to a collective group of IP addresses. An example is if you need to bring the server down it would make for decent but not perfect way of letting the bulk of the users know the system is immenently going down. I say decent because trying to reach every single last chat client is prone to all sorts of network issues. But for the most part such a broadcast or multicast mechnism is still useful.
Now the other problem is in a word: security. If you are planning on communicating thru firewalls then you will have to take VPNs and possibly SSL into account. At the same time, if your company has a VPN that end users dial into or access through the Internet, then they would be able to access your server across the enterprise. Indeed the network people at your company can tell you what to expect and you will need to make sure your app meets their requirements.
To start off, concentrate of getting the message brokering piece to be very efficient and work 100% inside your intranet. Make sure you run lost of stress tests. I recommedn writing a couple of test harnesses that pound your broker from both sides with hundreds of connections (use threads). Once you are certain that your broker is working, any remote user with VPN access should be able to see you broker if allowed by network ops. Thus challenge is get the chat client and broker working BEFORE you stroll into the network ops depertment and ask them to open up a firewall port. Chances are that is a non-trivial question that needs executive sponsorship.
Good luck!;)
Mike
|
|
|
|
|
iam sorry i didn't understand anything from what did you said?
But what is a broker ?
and how can i make mulitcasting mechanism.
but is it effective
Mess With The Best And Die Like The Rest
|
|
|
|
|