private static void _WriteTextJobLog( string pLogFile, string pFrom, string pMessage, string pUserID, string pMachineName) { bool ret = true; clsResponse clsRet = new clsResponse(); string userID = ""; string machineName = ""; string fileName = ""; string dirName = ""; StringBuilder text = null; DateTime now = clsSystemInfo.xNow; try { userID = pUserID; if (userID.Length == 0) { userID = clsSystemInfo.xWindowsUser; } machineName = pMachineName; if (machineName.Length == 0) { machineName = clsSystemInfo.xMachineName; } if (pLogFile.Length > 0) { fileName = Path.GetFullPath(pLogFile); dirName = Path.GetDirectoryName(fileName); if (!Directory.Exists(dirName)) { Directory.CreateDirectory(dirName); } } else { // ▼ Win7対応 dirName = clsSystemInfo.xLogDirectory; if (!Directory.Exists(dirName)) { dirName = Assembly.GetAssembly(typeof(clsTextLogger)).CodeBase; if (Environment.OSVersion.Platform.ToString().ToLower().StartsWith("win")) { dirName = Path.GetDirectoryName(dirName.Substring(8)); } else { dirName = Path.GetDirectoryName(dirName.Substring(7)); } } fileName = Path.GetFullPath(Path.Combine(dirName, "Elpis.log")); // ▲ Win7対応 } // ▼ LogFileが1Mbを超えたらバックアップし、新規作成 if (File.Exists(fileName)) { FileInfo fi = null; try { fi = new FileInfo(fileName); if (fi.Length > 10000000) { string dir = Path.GetDirectoryName(fileName); string newFileName = Path.GetFileNameWithoutExtension(fileName) + "_" + now.ToString("yyyyMMddHHmmss") + ".log"; newFileName = Path.Combine(dir, newFileName); File.Move(fileName, newFileName); } } catch (Exception ex) { string hh = ""; return; } finally { if (fi != null) { fi = null; } } } // ▲ LogFileが1Mbを超えたらバックアップし、新規作成 // ▼ Log出力 // 初めて書き込む際は、権限を設定する。 if (!File.Exists(fileName)) { using (StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8)) { text = new StringBuilder(); text.Append("## " + Environment.NewLine); text.Append("## Created " + now.ToString("yyyy/MM/dd HH:mm:ss") + Environment.NewLine); text.Append("## " + Environment.NewLine); sw.WriteLine(text.ToString()); text = null; sw.Close(); } // ▼ ファイルアクセス権変更(winのみ実行) if (Environment.OSVersion.Platform.ToString().ToLower().StartsWith("win")) { clsACL acl = null; try { acl = new clsACL(); clsRet = acl.xChengeFileSecurity(fileName); } catch (Exception ex) { clsRet.xSetError(ex.Message + Environment.NewLine + ex.StackTrace); } } // ▲ ファイルアクセス権変更 } using (StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8)) { text = new StringBuilder(); text.Append(now.ToString("yyyy/MM/dd HH:mm:ss fff") + ","); text.Append(userID + ","); text.Append(machineName + ","); text.Append(pMessage.Replace(Environment.NewLine, " ") + ","); text.Append(pFrom); sw.WriteLine(text.ToString()); text = null; sw.Close(); } // ▲ Log出力 } catch (Exception ex) { ret = false; } }
private bool _Save() { bool ret = true; clsResponse response = new clsResponse(); // ▼ 設定データをバイト配列に変換する DataSet ds = new DataSet(); ds.Tables.Add(myData_.Copy()); MemoryStream ms = new MemoryStream(); ds.WriteXml(ms, XmlWriteMode.IgnoreSchema); byte[] bytesIn = ms.ToArray(); // ▲ 設定データをバイト配列に変換する // ▼ 暗号化する string key = clsCrypt.xGetPublicKey(); //DESCryptoServiceProviderオブジェクトの作成 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //共有キーと初期化ベクタを決定 //パスワードをバイト配列にする byte[] bytesKey = Encoding.UTF8.GetBytes(key); //共有キーと初期化ベクタを設定 des.Key = ResizeBytesArray(bytesKey, des.Key.Length); des.IV = ResizeBytesArray(bytesKey, des.IV.Length); //暗号化されたデータを書き出すためのMemoryStream MemoryStream msOut = new MemoryStream(); //DES暗号化オブジェクトの作成 ICryptoTransform desdecrypt = des.CreateEncryptor(); //書き込むためのCryptoStreamの作成 CryptoStream cryptStreem = new CryptoStream( msOut, desdecrypt, CryptoStreamMode.Write); //書き込む cryptStreem.Write(bytesIn, 0, bytesIn.Length); cryptStreem.FlushFinalBlock(); //暗号化されたデータを取得 byte[] bytesOut = msOut.ToArray(); //閉じる cryptStreem.Close(); msOut.Close(); // ▲ 暗号化する // ▼ ファイルに書き出す FileStream file = null; try { file = new FileStream( myFileName_, FileMode.Create, FileAccess.Write); file.Write(bytesOut, 0, bytesOut.Length); file.Flush(); } catch (Exception ex) { ret = false; string msg = ex.Message + ex.StackTrace; clsTextLogger.xWriteTextLog( MethodBase.GetCurrentMethod().DeclaringType.FullName + "." + MethodBase.GetCurrentMethod().Name, msg); return(ret); } finally { if (file != null) { file.Close(); file.Dispose(); file = null; } } // ▲ ファイルに書き出す // ▼ アクセス権変更 clsACL acl = null; try { acl = new clsACL(); response = acl.xChengeFileSecurity(myFileName_); } catch (Exception ex) { ret = false; response.xSetError(ex.Message + Environment.NewLine + ex.StackTrace); } if (response.xHasError) { ret = false; clsTextLogger.xWriteTextLog( MethodBase.GetCurrentMethod().DeclaringType.FullName + "." + MethodBase.GetCurrentMethod().Name, response.xMessage); } // ▲ アクセス権変更 return(ret); }