[C#] 관리자 권한으로 실행하기

[C#] 관리자 권한으로 실행하기

CSharp
해당 작업은 Program.cs 에서 작업을 합니다. using System.Security.Principal; using System.Diagnostics; /// <summary> /// 관리자 권한 체크 /// </summary> /// <returns></returns> public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if (null != identity) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } return false; } 메인 실행전에 관리자 권한으로 실행 하도록 하면 됩니다. [STAThread] static void Main() { if (IsAdministrator() == false) { try { ProcessStartInfo procInfo = new ProcessStartInfo(); procInfo.UseShellExecute = true; procInfo.FileName = Application.ExecutablePath; procInfo.WorkingDirectory = Environment.CurrentDirectory; procInfo.Verb = "runas"; Process.Start(procInfo); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } 위 방법으로로 처리 할 수 있지만 다른 방법도 있습니다. 프로그램  속성에서 보안의 "ClickOnce"를 선택합니다. 그러면은 위 처럼 "app.mainfest"가 생기게 됩니다. ※ 이방법을 할 경우에는 프로그램에 아이콘에 방패 모양이 생기게 됩니다. 원래 기본값이 "asInvoker'…
Read More

[MySQL] 상태가 sleep 인것 정리하기

Database
#!/bin/sh NOW=$(date +"%m-%d-%Y") FILE="/root/sleep_processes.$NOW.txt" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "select concat('KILL ',id,';') into outfile '/tmp/sleep_processes.txt' from information_schema.processlist where State = 'User sleep'" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "source /tmp/sleep_processes.txt;" if [ -s "/tmp/sleep_processes.txt" ]; then cp /tmp/sleep_processes.txt $FILE fi rm -f /tmp/sleep_processes.txt https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=81951&page=2
Read More

[C#] 화면 캡쳐 하기

CSharp
WinForm 안의 Controler 를 캡쳐하기 string FileName = DateTime.Now.ToString("yyyyMMdd_HHmmss"); Bitmap bitmap = new Bitmap(width, height); this.panel1.DrawToBitmap(bitmap, new Rectangle(0, 0, width, height)); bitmap.Save(FileName + ".png", ImageFormat.Png); 스크린틀 캡쳐하는 기능 string FileName = DateTime.Now.ToString("yyyyMMdd_HHmmss"); Bitmap bitmap = new Bitmap(넓이, this.높이); Graphics g = Graphics.FromImage(bitmap); g.CopyFromScreen( PointToScreen(new Point(시작 X좌표, 시작 Y 좌표)), new Point(0, 0), new Pint(넓이, 높이)); bitmap.Save(FileName + ".png", ImageFormat.Png);
Read More
c# 에러 출력 예외 설정

c# 에러 출력 예외 설정

CSharp
VS -> 디버그 -> 창 -> 예외설정 -> ContextSwitchDeadlock 체크 해제 << 에러내용 >> CLR에서 60초 동안 COM 컨텍스트 0x1a18b8에서 COM 컨텍스트 0x1a1a28(으)로 전환하지 못했습니다.  대상 컨텍스트/아파트를 소유하는 스레드가 펌프 대기를 수행하지 않거나, Windows 메시지를 펌프하지 않고 매우 긴 실행 작업을 처리하고 있는 것 같습니다. 이러한 상황은 대개 성능에 부정적인 영향을 주며 응용 프로그램이 응답하지 않거나 시간이 흐름에 따라 메모리 사용이 증가하는 문제로 이어질 수도 있습니다. 이 문제를 방지하려면 모든 STA(Single Threaded Apartment) 스레드가 펌프 대기 기본 형식(예: CoWaitForMultipleHandles)을 사용하고 긴 실행 작업 동안 지속적으로 메시지를 펌프해야 합니다
Read More

[PHP] 라인 Notify 기능

PHP
API 토큰 생성 사이트 : https://notify-bot.line.me/my/ 위 사이트에서 토큰을 발행 합니다. 아래의 기능으로 PHP 파일을 작성해서 데몬에 올려도 되고, cron에 작업해도 됩니다. $APIURL = "https://notify-api.line.me/api/notify"; $APIKey = "발행한 Key"; if ($imgUrl === null) { $postData = [ "message" => $msg ]; } else { $postData = [ "message" => $msg, "imageThumbnail" => $imgUrl, "imageFullsize" => $imgUrl ]; } $fields = ''; foreach ($postData as $dataKey => $dataValue) { $fields .= $dataKey . '=' . $dataValue . '&'; } rtrim($fields, '&'); $curlOptions = [ CURLOPT_URL => $this->APIURL, CURLOPT_POST => 1, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_POSTFIELDS => $fields, CURLOPT_HTTPHEADER => [ "authorization: Bearer ". $APIKey, "content-type: application/x-www-form-urlencoded" ], ]; $curl = curl_init(); curl_setopt_array($curl, $curlOptions); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl);
Read More

[PHP] date, 날짜 포맷 설정

PHP
년도와 관련된 포멧  문자  설명  예 Y 4자리 숫자로 표시  1999, 2003 y 2자리 숫자로 표시 99, 03 o ISO-8601에 맞는 포맷으로 표시 (Y랑 같으나, ISO 규격에 맞는 W가 포함한 년을 사용) 1999, 2003 L 윤년 여부 윤년 : 1아닐경우 : 0 월과 관련된 포맷 문자  설명 예  F 달을 영어로 표시  January, December M 3자리의 짧은 영어로 표시 Jan, Dec m 0을 앞에 붙인 2자리 숫자  01, 12 n 월을 숫자로 표시 1, 12 t 해당하는 달의 수를 표시 28, 30, 31 일과 관련된 포맷 문자 설명 예 d 0을 앞에 붙인 2자리 숫자 01 ~ 31 j 일을 숫자로 표시 1 ~ 31  z 1년의 n번째 날  0 ~ 365 S 날짜 뒤에 영어 2글자 suffix 추가 st, nd, rd or th (j와 잘 연동됨) 예: 1st, 2nd, 3rd,…
Read More

Winform 환경설정 세팅 저장 장소

CSharp
Windows Application을 개발 할 때, 현재 상태의 설정값(사용자ID, 비밀번호, 포지션 등등... )을 저장하여 다음번 Load 시 다시 이용하려고 할 경우,   보통 Settings.settings에 키를 설정 하고 Properties.Settings.Default.세팅명 을 프로퍼티로 사용합니다.   Settings.settings에 아무런 설정이 없을 경우엔 app.config에 특별한 내용이 들어가지 않지만, Settings.settings에 세팅을 하나라도 설정하는 경우 app.config에   <configSections>     <sectionGroup name="userSettings" ...> ...   <userSettings>     <......Properties.Settings> ... #biki1983omi @netdoor!   등의 태그가 자동으로 포함됩니다.   로드시 Properties.Settings.Default.세팅명 을 이용하고, 저장시 Properties.Settings.Default.Save(); 메서드를 이용하면 됩니다.   Settings.settings에 설정할 시 '범위'는 '사용자'로 하여야 런타임시 저장할 수 있습니다. 런타임 시 ....exe.config에 값이 저장되는 것이 아니라,  C:\Users\사용자\AppData 하위의 해당 App 폴더에 값이 저장됩니다.   기본적으로 숨겨진 폴더이긴 해도, 비밀번호 등은 암호화 처리를 하는 것이 좋겠지요. ^^   가끔 네임스페이스 충돌로 인해 Full Namespace 즉, 네임스페이스.Properties.Settings.Default.세팅명 로 사용해야 하는 경우도 있으니 참고하세요.  …
Read More

소스보관

CSharp
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Drawing.Imaging; using System.Net; using System.Collections; using System.Threading; using System.IO; using MySql.Data.MySqlClient; namespace FnbfoodNaverSmartstoreCapture { public partial class MainForm : Form { private string ConnectDB = "Server=211.233.11.93; Port=3306;Database=fnbfood;Uid=fnbfood;Pwd=@fnbfood!;Charset=utf8;convert zero datetime=True;"; private MySqlCommand command; private MySqlDataReader DBResult; public MainForm() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; this.DoubleBuffered = true; } private void MainForm_Load(object sender, EventArgs e) { DateTimeCheck(); } /// <summary> /// 웹을 실제 실행해야 되는지 체크하도록 함. /// </summary> private void DateTimeCheck() { string Week = System.DateTime.Now.ToString("ddd"); int TimeHM = Convert.ToInt32(System.DateTime.Now.ToString("Hmm")); switch (Week) { case "월": case "화": case "수": case "목": case "금": if (TimeHM > 750 && TimeHM < 1810) { this.Activate(); this.Show(); this.WindowState = FormWindowState.Normal; WebLoad(); } else {…
Read More

[C#] URL에서 XML 해석

CSharp
XmlDocument doc = new XmlDocument(); doc.Load("URL주소"); XmlNodeList forecastNodes = doc.SelectNodes("rss/channel/item"); foreach (XmlNode node in forecastNodes) { if (node["category"] != null) { if (node["category"].InnerText == "NOTICE") { string parseFormat = "ddd, dd MMM yyyy HH:mm:ss zzz"; DateTimeOffset dto = DateTimeOffset.ParseExact(node["pubDate"].InnerText, parseFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); DateTextbox.Text = dto.ToString("yyyy년 MM월 dd일 (ddd) tt h시 mm분"); break; } } }
Read More

[MySQL] Auto_Increment 값 재정렬 하기

Database
MySQL에서 데이터를 정리하다 보면 auto_increment 값의 충돌로 데이터가 입력이 되지 않는 경우가 있습니다.이럴 경우 간단히 해결할 수 있는 방법이 있는데요. auto_increment 값을 재지정해주면 쉽게 해결됩니다. 단순히 원하는 값으로 초기화하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=XXXXXX(설정한 인덱스번호); 기존의 ROW들을 재정렬 및 셋팅하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=1; SET @CNT = 0; UPDATE `table_name` SET `table_name`.`auto_colmn` = @CNT:=@CNT+1; 만약에 데이터가 있다면은 작동하지 않을수 있습니다. ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`); 참조 : https://code.i-harness.com/ko/q/8827ea
Read More

[MySQL] Auto_Increment 한계

Database
[MySQL] Auto_Increment 한계 CREATE TABLE을 할때, TYPE다음에 나오는 괄호안 숫자가 BYTE를 나타낸다고 알고 있었는데요,실제로 데이터를 넣어보니 끝도 없이 들어가네요. 왜 이럴까 문서를 찾아보던중 잘 정리된 블로그가 있어서 원인은 잘 알게 되었지요^^ 참고 : http://blackbull.tistory.com/44 위 사이트를 읽어보면, 결국 괄호안 숫자와 상관없이 MySQL INT 최대값까지 발번이 될것으로 판단되네요.그렇다고 INT 최대값인 4,294,967,295까지 테스트를 해볼수도 없고, 그래서 다시한번 구글링을 해봤습니다. http://forums.devshed.com/mysql-help-4/auto-increment-what-happens-at-max-value-334661.html 요길 보니깐 사람들이 잘 정리해주셨네요^^int(11) auto increment으로 설정을 하게 되면, 최대 4,294,967,295까지 발번이 되고 이후에는 error가 난다고 하네요. 최대값이 얼마나 큰 숫자인지 계산을 한 글도 있는데요,10년동안(3650일) 발번을 한다고 볼때, 일별 1,176,703 rows가 발생해야 최대값을 초과할 수 있습니다. 따라서,Transaction이 엄청 빈번한 OLTP환경에서는 SRL타입을 int(11)로 설정하기보다는unsigned BIGINT로 설정하시는게 좀더 나을것으로 판단됩니다. unsigned BIGINT면 최대값이 18,446,744,073,709,551,615이므로 왠만해서는 최대값을 초과하지 않을것으로 사료됩니다. 물론 그게 아니라면 스키마 설계를 다시하심이 낫지 않을까 개인적으로 생각해봅니다.^^아님, 돈이 빵빵하시면 오라클을 써보심도…
Read More