|
Hi,
I am sending email using C#. I would like to know, while sending, ow can I get a delivery receipt or flag in order to update my database with the status?
Thaks,
Jassim
Technology News @ www.JassimRahma.com
|
|
|
|
|
Did you consider searching CodeProject: [^].
«OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. » Alan Kay's clarification on what he meant by the term "Object" in "Object-Oriented Programming."
|
|
|
|
|
but this will send a delivery receipt email..
How can I receive it as a flag when sending the email so that I can update my database table status accordingly?
Technology News @ www.JassimRahma.com
|
|
|
|
|
You can't - you have to process the receipt emails and update your DB from them.
But be aware, many systems do not send automatic receipts: they will only send them when the email is read, and they usually ask the user if he wants the receipt sent first.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Hi,
I would like to save a license key and the connectionstring for my application on the user's PC but I want to make sure it's encrypted strongly so user won't be able to decrypt in order to protect my license key and connection string.
any suggestion?
Thanks,
Jassim
Technology News @ www.JassimRahma.com
|
|
|
|
|
|
Hi,
I'm having a problem with using a BindingList as DataSource for a DataGridView.
The BindingList and the objects in it come from another assembly, thus I cannot modify the object itself to conform to what I want to display in a DataGridView column.
Basically, the object looks something like this:
public class DownloadItem : INotifyPropertyChanged
{
public int Progress { get; private set;}
public string State { get; private set;}
}
In my own program (my assembly) I would bind the items like this:
dataGridViewDownloads.DataSource = _manager.GetDownloads();
Instead of having two columns (Progress and State) I would like to combine them to one (Status) which would display something like "23% Downloading".
I've made my own classes for custom column/cell (DataGridViewTextBoxCell and DataGridViewColumn) but from what I can tell, you can only have one PropertyName assigned to the column.
My initial thought was to create some sort of adapter for the DownloadItem class, but I'm not sure how I would create such adapter without creating another BindingList holding the adapter versions of DownloadItem, which in turn would then break the INotifyPropertyChange interface.
Searching for DataGridView and Adapter gives me results about SqlDataAdapter or DataTable. And I know the SQL adapter is not what I need. Not Sure about the DataTable though?
I would appreciate any hints and thoughts on this, or even hints on what I should search for.
[Solved, sort of]
I found a hackish way to do this without any kind of adapters:
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
DataGridViewElementStates cellState, object value, object formattedValue, string errorText,
DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle,
DataGridViewPaintParts paintParts)
{
StringFormat stringFormat = new StringFormat {
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center,
Trimming = StringTrimming.None,
FormatFlags = StringFormatFlags.NoClip | StringFormatFlags.NoWrap
};
base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value,
formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
var item = (DownloadItem)DataGridView.Rows[rowIndex].DataBoundItem;
graphics.DrawString(item.Progress + "% " + item.State, cellStyle.Font, new SolidBrush(cellStyle.ForeColor), cellBounds, stringFormat);
}
Basically, I created my custom column(and cell) with DataPropertyName set to "Progress" then I totally ignore the fact that the column "subscribes" to the Progress property and display whatever I want in the overridden Paint method
Even though this works, I am interested in how you people would have solved it
modified 30-Nov-14 14:04pm.
|
|
|
|
|
Actually I find the C# version of ( Link-grammar 5.1.3) and trying to use it under Windows (i.e. MSVC). In my current research I need to include the link grammar inside my C# project, But I would like to know how I can get the (.dll files) for the Link grammar 5.1.3 ?
|
|
|
|
|
its a touch unclear what you're asking for - for example - if you're using the c/C++ version, you simply link to the DLL's (afaik) and you have access to the parser/grammar
If you have found a c# version, does that not come as a dll/assembly ? (I did a quick search for a c# version and couldn't find it myself - I'd probably use the c/c++ dll's and p/invoke them if I couldn't find c# source)
|
|
|
|
|
I am trying to retrieve text results from a URL, but it redirects me to a second URL to authenticate then later redirects me back to the original URL to see the results. GetResponse ends up returning the html of the second URL instead of the text from the URL that I intended to get results from.
Here's how I am currently attempting to make the web requests.
string URL = "http://somesite.net/results";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
httpWebRequest.Headers.Add("Authorization", "Basic " + auth);
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.Method = "GET";
Is there a way that I can handle the redirect to the login URL so I can pull the right data?
Any help will be greatly appreciated, and thank you for taking the time to look over this. Please let me know if I need to provide any additional information.
|
|
|
|
|
WinForms Visual Studio 2013/4 .NET 4.5
I'm executing the code shown here without error, and with valid user-domain and filepath values:
using System.IO;
using System.Security.AccessControl;
private string filePath = validFilepath;
private void setNoDelete()
{
string user = Environment.UserDomainName + "\\" + validAccountName;
FileSecurity security = File.GetAccessControl(filePath);
security.AddAccessRule(new FileSystemAccessRule(user, FileSystemRights.Delete, AccessControlType.Deny));
File.SetAccessControl(filePath, security);
} But, the test file ... in a folder on the Desktop ... can still be deleted in the usual way after this is called.
One hypothesis is that my current user-account has some kind of elevated privileges that cannot be over-ridden by executing this code, but I am not at the place I can really evaluate that idea.
Appreciate any response !
«If you search in Google for 'no-one ever got fired for buying IBM:' the top-hit is the Wikipedia article on 'Fear, uncertainty and doubt'» What does that tell you about sanity in these times?
modified 2-Dec-14 3:04am.
|
|
|
|
|
Is the user a local admin?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Thanks, Eddy,
Yep, my Win8.1 machine has one user-account which I boot into, and I set its type to
'Admin.
«If you search in Google for 'no-one ever got fired for buying IBM:' the top-hit is the Wikipedia article on 'Fear, uncertainty and doubt'» What does that tell you about sanity in these times?
|
|
|
|
|
As Manfred proves, it is possible.
To my limited knowledge, that would make the file completely "undeletable"? And your application uninstallable?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: To my limited knowledge, that would make the file completely "undeletable"?
Not quite! If you don't take away the rights to read and set access permissions, the involved group/account that was denied the delete permission can always change these back. All that I proved is that it is possible to remove the delete right even when moving to elevated mode. So it is still possible to delete the file, but the group/account involved would have to change the file permissions first. I still have some more experiments to run, but that is what I have discovered so far.
Cheers!
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
The user can still delete the file if the "Delete Subfolders and Files" permission is granted to, or inherited from, some parent folder of the file.
|
|
|
|
|
I experimented with setting the enclosing Folder's delete permission to 'deny, as well as the file in that folder: can still delete it from the desktop in the standard way.
I am running a User account that has 'Admin privileges.
thanks, Bill
«If you search in Google for 'no-one ever got fired for buying IBM:' the top-hit is the Wikipedia article on 'Fear, uncertainty and doubt'» What does that tell you about sanity in these times?
modified 28-Nov-14 22:05pm.
|
|
|
|
|
Hi Bill,
after some experiments and lots of hair pulling I've come to the following conclusion and result that works on Windows 7 (I Work for a company that does most certainly not fit the description "early adaptor".)
In a nutshell:
If and only if both the "FILE_DELETE_CHILD" access right on the files parent folder and the "DELETE" right on the file itself are set to "DENY" can the file not be deleted even after the system has requested elevated rights. This presumes that the user is logged on with an account that is a member of the group local Administrators and the previously mentioned denials of rights were applied to that group.
This is pretty much it. I was a bit stumped that denial of the "FILE_DELETE_CHILD" right on the containing folder did not suffice to hinder the deletion. I did not try it with a normal account though.
Regards,
Manfred
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
Here is a program that I ran both with elevated rights (Run as Administrator) and without elevated rights. Either way it is impossible to delete the fileTwo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
namespace AppPoolEnum
{
class Program
{
private static void Main(string[] args)
{
String filePath = @"D:\Temp\Manfred\Delete-3-Test";
String accountName = String.Format("Administrators");
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
setNoDeleteChildren(filePath, accountName);
String fileOne = String.Format("{0}\\{1}", filePath, "File-One.txt");
String fileTwo = String.Format("{0}\\{1}", filePath, "File-Two.txt");
File.Create(fileOne).Dispose();
File.Create(fileTwo).Dispose();
if (File.Exists(fileOne) && File.Exists(fileTwo))
Console.WriteLine("Both files {0} and {1} exist!", fileOne, fileTwo);
setNoDeleteFile(fileTwo, accountName);
File.Delete(fileOne);
File.Delete(fileTwo);
}
private static void setNoDeleteFile(String path, String account)
{
FileSecurity security = File.GetAccessControl(path);
security.AddAccessRule(new FileSystemAccessRule(account, FileSystemRights.Delete, AccessControlType.Deny));
File.SetAccessControl(path, security);
}
private static void setNoDeleteChildren(String path, String account)
{
DirectorySecurity security = Directory.GetAccessControl(path);
security.AddAccessRule(new FileSystemAccessRule(account, FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Deny));
Directory.SetAccessControl(path, security);
}
}
}
Regards,
Manfred
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
Hi Manfred, thanks so much for taking the time to look into this. I am going to test your ideas later today.
This little adventure was "inspired" by a QA question from someone who wanted a FileSystemWatcher that would monitor file-deletes and instead of actually deleting the file move the file to a special folder. Of course, you get a FileSystemWatcher notification only after the event ... and no facility to cancel the event ... so I was playing with the idea that when the file is created it gets delete-denied, then when the attempt to delete is made I either get a notification of a 'delete or an file-error of some type, which I could trap: at that point I could move copy the file to the "deleted folder," and really delete the file in the folder being watched by the FileSystemWatcher.
cheers, Bill
«OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. » Alan Kay's clarification on what he meant by the term "Object" in "Object-Oriented Programming."
|
|
|
|
|
BillWoodruff wrote: instead of actually deleting the file move the file to a special folder.
Oh oh, that is one of the oddities I also discovered, but did not cover in my answer to your post: Moving a file as well as only renaming the file will not work when the account trying to accomplish that has been denied the delete right on said file.
I've googled about this "feature" quite a bit, but did not reach any hindsight as to what "special implementation"*1 would cause this kind of havoc. All that this confirms to me is that the windows authorization scheme seems to be utter BS.
Cheers!
*1And by special I mean this kind of "special": Special (Fr)ed, Stephen Lynch[^]
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
I guess last time I went to wild with my google foo.
This time with a more moderate approach I actually found this: Permissions for Renaming a File[^] and it actually explains what is going on behind the scenes: "Windows treats a file renaming operation as a deletion of the file and creation of a new file with the new name. ..." and goes on with an explanation of additional permissions that are needed in order to rename a file.
Regards,
Manfred
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
Hi,
I would like to ask how can I write to LOCAL_MACHINE registry from my .NET application when the window user is limited user?
Can I write with Administrative Privileges?
Thanks,
Jassim
Technology News @ www.JassimRahma.com
|
|
|
|
|
You can only use administrator privileges if you are running under an administrator account. If you are running under an ordinary user account then you need an administrator account password to allow it.
|
|
|
|
|
No you can't. If you pause and think about it for a little while, you can see that it makes sense because you would end up exposing a large security hole if you could do things with your app that the user doesn't have the privileges to do.
|
|
|
|
|