WiiSen

2012 迎向技術藍海《HTML5、WebGL、JQuery、.NET MVC、LINQ、Lambda、Entity Framework》
半調子資訊人,
當個資訊玩家比當個資訊專家快樂多了!

Categories

Beauty Clock

顯示具有 C# 標籤的文章。 顯示所有文章

避免因為使用內建憑證一年期限的困擾,且需要同一支程式使用多個不同App.config安裝在同一個主機上,需要使用自行建立的憑證來做為區分。

以下為產生憑證的步驟

  1. 開啟Visual Studio 2005 命令提示字元
  2. 輸入下列指令
  3. makecert -r -pe -n "CN=Test Cert" -b 01/01/2000 -e 12/31/2100 -eku 1.3.6.1.5.5.7.3.3 -ss My
    指令選項說明可參考MSDN 中的「憑證建立工具(Makecert.exe)」章節。其中-pe 是必要選項,允許這個憑證的私密金鑰可以匯出;-b 與-e 則是這個憑證的有效期限的開始日期與結束日期;-ss 則是設定這個憑證的存放區。
    -eku的用法標示對象代號
    1.3.6.1.5.5.7.3.1 – id_kp_serverAuth
    1.3.6.1.5.5.7.3.2 – id_kp_clientAuth
    1.3.6.1.5.5.7.3.3 – id_kp_codeSigning
    1.3.6.1.5.5.7.3.4 – id_kp_emailProtection
    1.3.6.1.5.5.7.3.5 – id-kp-ipsecEndSystem
    1.3.6.1.5.5.7.3.6 – id-kp-ipsecTunnel
    1.3.6.1.5.5.7.3.7 – id-kp-ipsecUser
    1.3.6.1.5.5.7.3.8 – id_kp_timeStamping
    1.3.6.1.5.5.7.3.9 – OCSPSigning
  4. 在命令列執行.Net Framework SDK 提供的憑證管理工具CertMgr
  5. 選擇剛剛利用Makecert 工具建立的憑證,並按下[匯出]按鈕,會出現憑證匯出精靈
  6. 按下[下一步],選擇「是,匯出私密金鑰」,再按[下一步]
  7. 選擇匯出檔案格式,若無特別需要則保留預設值即可,再按[下一步]
  8. 設定密碼,此頁可留空白不填,再按[下一步]
  9. 設定金鑰檔匯出的檔案路徑,設定完成後再按[下一步]
  10. 憑證匯出完成,按下[完成]結束精靈

合併的語法是利用陣列的聯集(Union)來做,

以下是a和b聯集

int[] c = a.Union(b).ToArray(); 

不過,因為是用集合的聯集來實作,所以遇到重複元素,就會被刪掉:

int[] a = { 1, 2, 3, 4, 5 }; 
int[] d = { 1, 6, 7, 8, 9 }; 
int[] e = a.Union(d).ToArray(); 

這樣的結果,最後就會是{1, 2, 3, 4, 5, 6, 7, 8, 9}
1只會出現一次而已。


DataTable dt = new DataTable();
dt.DefaultView.Sort = "欄位名稱";
int rowIndex = dt.DefaultView.find("欄位值");
if(rowIndex == -1) {
Message.Show("Sorry找不到資料");
} else {
Message.Show("資料在第 " + rowIndex + " 行");
}
參考來源http://blog.xuite.net/alwaysfuturevision/liminzhang/8745872


///
/// 取得處理器編號
///

/// 處理器索引
/// 回傳處理器編號
public string GetCPUSerialNumber(int index)
{
string strCPUSerialNumber = "";
try
{
ManagementObject wmiObj = new ManagementObject(string.Format("Win32_Processor.DeviceID='CPU{0}'", index));
strCPUSerialNumber = wmiObj.GetPropertyValue("ProcessorId").ToString();
}
catch (Exception)
{
strCPUSerialNumber = "";
}
return strCPUSerialNumber;
}

Tips. 在VirtualBox中Win32 WMI是沒有被啟用的,所以執行此方法會產生NULL Exception
參閱:[vbox-trac] [VirtualBox] #6361: Win32_BaseBoard WMI Class Not Available


///
/// 使用NPOI產生EXCEL檔案 For C#
///

public void buildExcel()
{
SqlDataAdapter da;
DataTable dt = new DataTable();
SqlConnection conn = new SqlConnection(connStr);

try
{
conn.Open();
da = new SqlDataAdapter("SELECT * FROM EXP_TABLE", conn);
da.Fill(dt);

// 建立EXCEL物件
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.CreateSheet();
HSSFRow headerRow = sheet.CreateRow(0);

// 處理欄位標題.
foreach (DataColumn column in dt.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
}

// 處理欄位值.
int rowIndex = 1;

foreach (DataRow row in dt.Rows)
{
HSSFRow dataRow = sheet.CreateRow(rowIndex);

foreach (DataColumn column in dt.Columns)
{
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
}

rowIndex++;
}

FileStream file = new FileStream(String.Format(@"C:\{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmss")), FileMode.Create);
workbook.Write(file);

file.Close();
headerRow = null;
sheet = null;
workbook = null;
da.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dt.Dispose();
conn.Close();
conn.Dispose();
}
}

NPOI官方網站
http://npoi.codeplex.com/
NPOI 1.2教程
http://blog.csdn.net/tonyqus/archive/2009/11/29/4898453.aspx
Excel讀寫使用NPOI
http://www.dotblogs.com.tw/killysss/archive/2010/01/27/13344.aspx


/// <summary>
/// 透過SMTP發送信件範例, 以GMail為例 For C#
/// </summary>
private void SendMail()
{
try
{
SmtpClient mailClient = new SmtpClient("smtp.gmail.com");

//Credentials登陸SMTP服務器的身份驗證
mailClient.Credentials = new NetworkCredential("user", "password");

//發件人地址
MailMessage message = new MailMessage(new MailAddress("Sender<Sender@gmail.com>"));

//收件人地址
message.To.Add(new MailAddress("Recever<Recever@gmail.com>"));

//可以添加多個副本收件人(CC)
message.CC.Add(new MailAddress("Sender<Sender@gmail.com>"));

//可以添加多個密件副本收件人(BCC)
message.Bcc.Add(new MailAddress("Sender<Sender@gmail.com>"));

//郵件內容
message.Body = "Mail Test In C#!";

//郵件主題
message.Subject = "C# SMTP Mail Send!!";

//附件
message.Attachments.Add(new Attachment(@"C:\Attachment.txt")); //添加附件

mailClient.Send(message);

MessageBox.Show("寄件成功");
}
catch (Exception ex)
{
MessageBox.Show("寄件失敗" + "\n\n問題敘述: " + ex.Message);
}
}

Time & Weather

Recent Posts

Comments