|
Well, it's the most complete documentation on C#. Other then that, try searching Amazon for beginning C# books.
RageInTheMachine9532
|
|
|
|
|
Hi, I have CCW written and I want to make it to be portable( to be running on different PC without need to recompile). I need to make some kind of installation program to registry this COM when it's brought on new PC.
Question: 1. is it possible?
2. if it is possible - is there any code sample or tutorial for it?
Thanks
|
|
|
|
|
Yes it is possible. Your installer should run "regasm.exe /codebase assembly.dll" on the target machine when the assembly has been copied over. This assembly can be found in the "%WINDIR%\Microsoft.NET\Framework\v1.x.xxxx" directory of the target machine, if .NET is installed. Replace "x.xxxx" with the version you want to target, or detect the latest version of .NET.
How you do it depends on what installer you use. You could use the Windows Installer project in VS.NET to do this. This allows you to also get the path of the file easily what it will be when copied to the target machine.
On a side note, make sure you followed good COM guidelines, like using fixed GUIDs using the GuidAttribute for your interfaces and classes, and never use auto-generated class interfaces. Also specify ClassInterfaceType.None on your class, explicitly define your class interface, and implement that as the first interfaces. Microsoft doesn't do this in their samples in the .NET Framework SDK, but they do recommend it elsewhere and as someone with many years of COM experience I can tell you that you must follow good COM guidelines or you'll run into problems, such as never changing a released interface. Always derive a new one, append "2", "3", and so on for each new version (just like you'd see in various API documentation on MSDN).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Is there an easy way to delete the (old) last lines of a multiline TextBox? Cos now I have to set the MaxLength to a huge number...
Thanks!!!
|
|
|
|
|
I'm still not all that familiar with Windows Forms, although I've studied it. Can't you do something like this? (Warning: poorly-designed code)
public static void RemoveTopLines(TextBox textBox, int linesToRemove) {
if (textBox == null) {
throw new ArgumentNullException();
}
else if (linesToRemove < 0) {
throw new ArgumentException("Invalid line count (" + linesToRemove + ")");
}
string[] lines = textBox.Lines;
int currentLineCount = lines.Length;
int newLineCount = lines.Length - linesToRemove;
if (newLineCount < 0) {
newLineCount = 0;
}
string[] newLines = new string[newLineCount];
if (newLineCount > 0) {
Array.Copy(lines, linesToRemove, newLines, 0, newLineCount);
}
textBox.Lines = newLines;
}
|
|
|
|
|
Jeff Varszegi wrote:
Warning: poorly-designed code
I beg to differ This is most likely the best way to make large changes to lines.
|
|
|
|
|
Thanks! I mostly mean that I didn't take the time to think about synchronization issues, and I didn't spend the normal half hour agonizing over every parameter name, etc. I also didn't test whether it'd be faster just getting the text as a string, and calling IndexOf repeatedly to skip past the indicated number of new-lines in the string; that might be faster, but I didn't have the time.
|
|
|
|
|
I am must be a total moron, but I can figure out how debugging works. I set the breakpoints and everything, but I can't find a window that tells me what variable equals what. I am using Visual Studion C#
Thanks
|
|
|
|
|
As a test, hit F10. Do you see a "Locals" window pop up anywhere? If not, hit "Debug - Windows - Locals". Now what do you see?
|
|
|
|
|
Also, is your build configuration set to 'Release' or 'Debug'?
|
|
|
|
|
|
Hi, I'm using the following code to get the Machine name in an app
System.Environment.MachineName
On most computers this works fine but on one of our testers computers (machine is a windows 2000 desktop pc, not a networking share either), it's throwing the following exception.
Request for the permission of type System.Security.Permissions.EnvironmentPermission, mscorlib, Version = 1.0.50000.0, Culture = neutral, publicKeyToken = blahblahblah failed.
I have no idea what is causing this. I tried messing around with the .Net Configuration. Figured mscorlib didn't have permission rights.
also.........
I can't get any computer information in general. Trying to do some WMI core queries as well from code and getting a "Security Error" Exception. Below is the code that gets the disk size.
public string GetsDiskSize(){
ManagementClass cimobject;
ManagementObjectCollection moc;
cimobject = new ManagementClass("Win32_DiskDrive");
moc = cimobject.GetInstances();
try { // BIOS INFO
foreach(ManagementObject mo in moc){
this.m_sDiskSize = GetSystemValue("Size",mo);
mo.Dispose();
break;
}
}
catch(Exception ex){
System.Windows.Forms.MessageBox.Show("GetsDiskSize " + ex.Message);
cimobject.Dispose();
moc.Dispose();
return ex.Message;
}
cimobject.Dispose();
moc.Dispose();
return this.m_sDiskSize;
}
Thx for your time,
Paul
|
|
|
|
|
What are the permissions of the person running the program (your tester) on the machine?
|
|
|
|
|
User is logged in as an admin. Not sure what you mean by permission?
|
|
|
|
|
That's what I meant. So did you use the configuration utility to check the permissions of your program's DLL? That's probably the one that doesn't have rights, not mscorlib.
|
|
|
|
|
Since I have limited time with my client, it would be best if I could simulate this error on my local machine. Can you think of any ways I can give this app, assemblies, groups less rigths, ty
|
|
|
|
|
I have to leave work in just a couple of minutes, but if I don't see an answer posted for you later, I'll try it from home.
So is your assembly signed, and if so, how?
|
|
|
|
|
Hi, I don't believe it is signed. If it is I didn't do it.
thx,
Paul
|
|
|
|
|
Are they running this locally or across the network? If it's the latter case, you must create a code group that grants the application (by a myriad of evidence) so that it has the necessary permissions (or just take the cheap route and grant your code FullTrust). If you use third-party controls in your application, you're better off using site evidence (like the Url membership condition, using a URL like ftp://NETSERVER1/ShareName/AppDirectory/*).
Read Understanding .NET Code Access Security[^] for more information.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
This is just running locally. If you know of anyway I could simulate this locally that would be helpful as well.
thx Paul
|
|
|
|
|
Last message was a little vague, sorry
This is just running locally (not over a network). Since I have limited time with my client was wonderiing if you know of anyway I could simulate this on my local machine and is there was a way to include a security policy with the executeable or deployment package.
|
|
|
|
|
Create a local user on your machine with the same permissions as the test users (like perhaps they're just in the "Domain Users" group). Log in as that user and test it. If you want to debug your app, don't forget to move the source code to an accessible directory (or give that new user permissions to access your directories) and recompile so that the path to the PDB files is correct.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I'm not sure what test users permissions are??? sorry,
but I created a new user with guests rights. What could I possibly change? (Something .net relative perhaps, changing assembly trust, library trust, executable trust .......)
Thanks,
Paul
|
|
|
|
|
So, I've tried to do a simple little editor. Works nice with normal text and whatnot, but things like ascii art with its weird characters will not show. They show in notepad but even when I use the same font they refuse to show in the my TextField. Tried a RichTextBox, did not work any good either.
So, any clues what I might do.
Thank you
|
|
|
|
|
Where is this text coming from? Are you programmatically setting it, or is it just typed in?
Microsoft MVP, Visual C#
My Articles
|
|
|
|