|
String xString = x.ToString("F1"); //format as floating point with 1 digit to
right of decimal point using the current culture.
Absolute faith corrupts as absolutely as absolute power
Eric Hoffer
All that is necessary for the triumph of evil is that good men do nothing.
Edmund Burke
|
|
|
|
|
You must specify the format by calling the System.Single.ToString(string format) overload.
|
|
|
|
|
Hopefully I am missing the point here, I have a simple question about public functions/classes
Lets says I create Widget application X, due to the complexity of the application the design dictates that some of the functionality should be farmed out into various DLLs. So now I have:
MainWidgetApp.exe
WidgetHelper.dll
WidgetHelper.dll has various Public functions/class that can be referenced by the main app. Once this setup gets deployed out into the real world there is nothing to stop another developer making a reference to the public functions/classes in the DLL.
So the question is how can I stop this from happening whilst still being able to keep the design of an Exe dependent on various DLLs
post.mode = postmodes.signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
Use an obfuscating tool after deployment. I also know of an application from Microsoft Research that will merge all your .NET assemblies into a single assembly, which can improve startup performance (as there is overhead involved in loading assemblies).
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Homosexuality in Christianity
Judah Himango
|
|
|
|
|
|
|
Well, the other developer won't have the docs, altough he can still see the classes and methods with something like .NET Reflector.
You could implement some kind of authentication, making the app generate an aunthentication ticket that is validated every time in the DLL's methods.
Is it really necessary? You could obfuscate your DLLs, so the other developers won't understand the code if the open the DLL in .NET Reflector.
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
Its not so much about obsfucating the code
The situation I am in is that I have a helper DLL that does alot of work with XML for an application I produced.
The company I work for has found out that other companies are using the public interface of this DLL to perform processing on their own data.
Obviously we want to stop this, but would prefer to keep the exe and helper dll seperate as it is also used by other applications.
The only solution I can think of, is as you suggested, some type of session/ticket validation but before embarking on that project I was wondering if there was another way
post.mode = postmodes.signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
The way I'm going to explain is a little crazy...
You can mask the DLL with some other filename (such as Filename.dat) and crypt it with, for example, a 3DES algorithm (provided in .NET Framework!). After this a some kind of bootstrapper is needed to decrpyt, rename, install the DLL in the GAC and start the main application. When the application is closed, the boostrapper removes the DLL from the GAC.
to install the DLL in the GAC you can use the utility provided with the .NET Framework.
My solution is ingenious, isn't it?
|
|
|
|
|
to install the DLL in the GAC you can use the utility provided with the .NET Framework.
This I am curious about, I wasnt aware that it was possible to control the GAC programmatically. Can you post up some more information
post.mode = postmodes.signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
The utility name is gacutil.exe, you can find it via-code in %windir%\Microsoft.NET\Framework\v1.1.4322\gacutil.exe
to install an assembly in the GAC use the command
gacutil /i "Assembly Path"
for example gacutil /i "D:\Projects\MyPrj\Release\bin\MyLib.dll"
to remove it
gacutil /u AssemblyName
for example gacutil /u "MyLib.dll"
It isn't complicated.
To improve performances you can install the assembly in the GAC with the ngen.exe (you can find it in the same directory of gacutil) utility. That program translates the assembly in a native image (i.e. an exe or dll file containing only machine-level code).
To di this, use the command:
ngen "Assembly Path"
for example ngen "D:\Projects\MyPrj\Release\bin\MyLib.dll"
to remove it you can use ngen and gacutil both.
the first way is
ngen /delete MyLib.dll
the second one is
gacutil /u MyLib.dll
to run those commands via-code (C#)
System.Diagnostic.Process.Start("Exe Path", "Arguments);
To avoid console is shown, you should learn more about Process class.
I hope I've been helpful.
|
|
|
|
|
Does it really need to be in the GAC? If not, don't put it there, just do this to the assembely in the directory where your application lives.
Of course, it wouldn't take a rocket scientist to capture the dll while the app is actually running, then copy it elsewhere for later use. Or even get it accidentally if the app quit under abnormal circumstances (eg. was killed with TerminateProcess()).
Matt Gerrans
|
|
|
|
|
the problem is that you cannot copy assemblies from the GAC because it is not a phisical directory! go to %windir%\assembly\GAC and try to copy a file from there. Use the command prompt also.
|
|
|
|
|
Wanna bet? You just need to know where to look.
Anyway I don't think any directory is a physical directory. Nothing in software is "physical." Of course, there are physical magnetic dipoles that are pointing in one direction or another, or transistors that have in particular electrical states and those are physical properties, but the concepts of files and directories are more metaphorical than physical.
Matt Gerrans
|
|
|
|
|
I tried to go to %windir%\assembly with windows explorer, and it doesn't allow you to copy assemblies.
I tried to go to the same dir with the command prompt, and the 'dir' command lists some assemblies (without extension!), but the 'copy' command doesn't work.
So...
[ITA] Tozzi ha ragione: Gaia si sta liberando di noi.
[ENG] Tozzi is right: Gaia is obliterating us.
|
|
|
|
|
MrEyes wrote:
The company I work for has found out that other companies are using the public interface of this DLL to perform processing on their own data.
And your company doesn't have any lawyers to stop this? If you already know it why not bring those other companies to court?
|
|
|
|
|
And your company doesn't have any lawyers to stop this? If you already know it why not bring those other companies to court?
Without get into the meat of the issue, the problem is highly political as we have "relationships" with these third parties. I have been directed from above to find a solution to the problem without going down the lawyer route.
post.mode = postmodes.signature;
SELECT everything FROM everywhere WHERE something = something_else;
> 1 Row Returned
> 42
|
|
|
|
|
Look into the "Licensing Components and Controls" topic of the .NET Framework Developer's Guide.
Also checkout third-party licensing components, such as Aspose.License for example. I think it is free (although with no support).
http://www.aspose.com/Products/Aspose.License/[^]
|
|
|
|
|
Walk up the stack trace and have a look at the assemblies. If you do not find a call from your (signed) main executable, then throw an exception. Obviously won't stop anyone from decompiling, remove your check, then compiling again but it's a start.
|
|
|
|
|
I wrote a program to keep sending a string by using the "SendKeys.SendWait()" method. I also wrote another program with only a textbox.
These two program were running simultaneously. How can the textbox accept only real key-pressed string but not SendKeys string?
|
|
|
|
|
|
How do I loginto a remote machine from an ASPX page..
I have a few server IPs I need to loginto. The login information needs to be extracted from an XML file..
It should be as good as using MSTSC.EXE.. Depending on the button being clicked, the remote desktop Connection IP address should change..Additionally the logon credentials need to be extracted form an XML File..
|
|
|
|
|
Hi...
I have added a TabControl with a few tab pages.
In the properties menu I have sat the Alignment to Left.
My problem is when i debug my app there is no text on tab pages!
In the output folder I also have a .manifest file, when i delete the .manifest file there is text on the tab pages.
Can anyone tell me why?
Thanks QzRz
|
|
|
|
|
Hi
I wrote a simple program that should find a specific window and hide it.
Somehow the window is actually being close (Its process is killed) and the weirdest thing is that the taskbar is also hides.
Here is my code:
<br />
public const int SW_HIDE = 0; <br />
<br />
[DllImport("user32.dll")] <br />
public static extern int ShowWindow(IntPtr hwnd,int nCmdShow); <br />
<br />
private void button1_Click(object sender, System.EventArgs e) { <br />
string title=textBox1.Text;
Process[] plist =Process.GetProcesses(); <br />
foreach(Process p in plist){ <br />
if(title.IndexOf(p.MainWindowTitle)>=0){ <br />
ShowWindowAsync(p.MainWindowHandle,SW_HIDE); <br />
}<br />
} <br />
} <br />
Can you see the problem? what is it?
or how can i hide a window without closing it?
Thank a lot
Mamtz
|
|
|
|
|
You can try this:
[Flags]
public enum SWP
{
SWP_ASYNCWINDOWPOS = 0x4000,
SWP_DEFERERASE = 0x2000,
SWP_DRAWFRAME = 0x20,
SWP_FRAMECHANGED = 0x20,
SWP_HIDEWINDOW = 0x80,
SWP_NOACTIVATE = 0x10,
SWP_NOCOPYBITS = 0x100,
SWP_NOMOVE = 2,
SWP_NOOWNERZORDER = 0x200,
SWP_NOREDRAW = 8,
SWP_NOREPOSITION = 0x200,
SWP_NOSENDCHANGING = 0x400,
SWP_NOSIZE = 1,
SWP_NOZORDER = 4,
SWP_REDRAWONLY = 0x717,
SWP_SHOWWINDOW = 0x40
}
[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);
private static SWP hideFlags = SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_HIDEWINDOW
SetWindowPos(p.MainWindowHandle, IntPtr.Zero, 0, 0, 0, 0, hideFlags); More info on MSDN[^].
Hope this works!
"..Commit yourself to quality from day one..it's better to do nothing at all than to do something badly.."
-- Mark McCormick
|
|
|
|