หน้าแรก > เอกสาร

เอกสารเก่าของวัสดุ

หมายเหตุ: "คุณมีเกินจำนวนสูงสุดของเคอร์เซอร์ ORA-01000 เปิด" [Java]

หมายเหตุเกี่ยวกับข้อผิดพลาดของ OracleDB ว่า: "คุณได้เกินจำนวนสูงสุดของเคอร์เซอร์เปิด ORA-01000" มาข้ามวันอื่น ๆ

กลายเป็นปัญหาเช่นรหัสต่อไปนี้
(การทำงานยังไม่ยืนยัน.. สิ่งสำหรับการเปิดเผยรหัสในการทำงานแปลจะไม่ไปเขียนใหม่เป็นตัวอย่าง)

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; public class cursorLeakeSample { public cursorLeakeSample(List idList) { try { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // コネクション取得 Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger"); String sql = "SELECT NAME FROM ITEM WHERE ID = ?"; PreparedStatement statement = null; try { for (String id : idList) { Object[] params = new Object[] { id }; // SQLにパラメータ埋め込みと実行statement = connection.prepareStatement(sql); statement.setObject(1, params[0]); statement.executeUpdate(); connection.commit(); } } catch (SQLException e) { // SQL実行失敗 connection.rollback(); e.printStackTrace(); } finally { statement.close(); connection.close(); } } catch (SQLException e) { // コネクションの接続・切断・ロールバック、ステートメントの解放に失敗 e.printStackTrace(); } catch (ClassNotFoundException e) { // Oracle JDBC ドライバが見つからなかった e.printStackTrace(); } } }  import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; public class cursorLeakeSample { public cursorLeakeSample(List idList) { try { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // コネクション取得 Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger"); String sql = "SELECT NAME FROM ITEM WHERE ID = ?"; PreparedStatement statement = null; try { for (String id : idList) { Object[] params = new Object[] { id }; // SQLにパラメータ埋め込みと実行statement = connection.prepareStatement(sql); statement.setObject(1, params[0]); statement.executeUpdate(); connection.commit(); } } catch (SQLException e) { // SQL実行失敗 connection.rollback(); e.printStackTrace(); } finally { statement.close(); connection.close(); } } catch (SQLException e) { // コネクションの接続・切断・ロールバック、ステートメントの解放に失敗 e.printStackTrace(); } catch (ClassNotFoundException e) { // Oracle JDBC ドライバが見つからなかった e.printStackTrace(); } } } 

เป็นส่วนหนึ่งที่เน้นว่าได้ก่อให้เกิด
คุณรู้หรือไม่เพราะเหตุใด
ขั้นแรกให้เปิดใส่ค่าที่จะใช้เป็นช่องว่างเพื่อสร้างคำสั่งตัวแปรที่ได้รับในวงออกที่ปลาย
ได้อย่างรวดเร็วก่อนจะมีลักษณะที่ก่อให้เกิดการรั่วไหลเพื่อให้เป็นรุ่นที่คุณสามารถค้นหาปัญหาที่เกิดขึ้นและปฏิบัติตามขั้นตอนเล็ก ๆ น้อย ๆ

"PrepareStatement" จะสร้างเคอร์เซอร์โดยปริยายในการจัดทำของ SQL
รหัสในคำถามเป็นจำนวนมากโดยปริยายว่าเ​​คอร์เซอร์ได้รับการสร้างขึ้นในห่วงและรู้ว่านี้
และจะได้รับการปล่อยตัวออกมาเพียงคนเดียวของ "prepareStatement" ครั้งที่ถูกเก็บไว้เมื่อออกจากออกจากวง

ตัวอย่างเช่นวันที่ 19 ไม่ได้เป็นว่ามันไม่ได้ถูกปล่อยออกมาถ้ากระบวนการเป็น 20

ดังนั้นสิ่งที่ผมควรเขียนว่า

 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; public class cursorLeakeSample { public cursorLeakeSample(List idList) { try { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // コネクション取得 Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger"); String sql = "SELECT NAME FROM ITEM WHERE ID = ?"; PreparedStatement statement = connection.prepareStatement(sql); try { for (String id : idList) { Object[] params = new Object[] { id }; // SQLにパラメータ埋め込みと実行 statement.setObject(1, params[0]); statement.executeUpdate(); connection.commit(); } } catch (SQLException e) { // SQL実行失敗 connection.rollback(); e.printStackTrace(); } finally { statement.close(); connection.close(); } } catch (SQLException e) { // コネクションの接続・切断・ロールバック、ステートメントの解放に失敗 e.printStackTrace(); } catch (ClassNotFoundException e) { // Oracle JDBC ドライバが見つからなかった e.printStackTrace(); } } }  import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; public class cursorLeakeSample { public cursorLeakeSample(List idList) { try { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // コネクション取得 Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger"); String sql = "SELECT NAME FROM ITEM WHERE ID = ?"; PreparedStatement statement = connection.prepareStatement(sql); try { for (String id : idList) { Object[] params = new Object[] { id }; // SQLにパラメータ埋め込みと実行 statement.setObject(1, params[0]); statement.executeUpdate(); connection.commit(); } } catch (SQLException e) { // SQL実行失敗 connection.rollback(); e.printStackTrace(); } finally { statement.close(); connection.close(); } } catch (SQLException e) { // コネクションの接続・切断・ロールバック、ステートメントの解放に失敗 e.printStackTrace(); } catch (ClassNotFoundException e) { // Oracle JDBC ドライバが見つからなかった e.printStackTrace(); } } } 

บางทีวิธีนี้ ถ้าคุณใช้ "PreparedStatement"
อะไรที่ฉันคิด; ปิด () ในคำสั่งดังนั้นหากคุณต้องการที่จะใช้สำหรับ "คำชี้แจง" Tadano

นอกจากนี้ไดนามิคของ [Java] เส้นทางการเรียน

หมายเหตุ: ตอนนี้ที่เราได้ดำเนินการในทางของฉันเองฉันมองและคุณต้องการที่จะสร้างโปรแกรมที่มีการอ้างอิงถึงชะลอของ Tomcat Jar WEB-INF/classes และระบบอื่น ๆ
" หนึ่ง Jar- "หรือ" Jar ไขมัน หากคุณคิดว่าสามารถตอบสนองด้วย "และมีได้ดีกว่าการใช้ประโยชน์จาก
อนึ่งการดำเนินการตรวจสอบได้รับการยืนยันว่าการทำงานแม้ในขณะที่สรุปไว้ในโถเป็น JRE5

 package jp.moonwing.net; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; /** * クラスパスの動的追加 * * @author $Author: U.Yobane $ * @version $Version: v 043b2b764886 2011/06/13 01:23:25+0900(JST) $ */ public final class ApplicationClassLoader { /** クラス情報格納フィールド */ private static final Class<?>[] PARAMETERS = new Class<?>[] { URL.class }; /** * コンストラクタ */ private ApplicationClassLoader() { } /** * メイン * * @param args 起動引数文字列配列 */ public static void main(String[] args) { try { // クラスパスの追加 addClassPath( {追加したいクラスパスディレクトリ} ); addClassPath( {追加したいJAR} ); // メインプログラムを実行 Application.execute(args); } catch (IOException e) { e.printStackTrace(); } } /** * クラスローダーにクラスパスを動的追加 * * @param classPath 追加するクラスパス * @throws IOException クラスパスの動的追加に失敗 */ public static void addClassPath(String classPath) throws IOException { addClassPath(new File(classPath)); } /** * クラスパスを再帰的にたどり、追加可能パスはすべて追加 * * @param classPath 追加するファイル * @throws IOException クラスパスの動的追加に失敗 */ private static void addClassPath(File classPath) throws IOException { if (classPath.isDirectory()) { // ディレクトリを追加 addClassPath(classPath.toURL()); // ディレクトリ配下を探索 File[] child = classPath.listFiles(); for (int i = 0; i < child.length; i++) { addClassPath(child[i]); } } else { String suffix = getSuffix(classPath.getName()); // 見つかったファイルがJARもしくはZipの場合は追加 if (suffix.equalsIgnoreCase("zip") || suffix.equalsIgnoreCase("jar")) { addClassPath(classPath.toURL()); } } } /** * システムクラスローダーにクラスパスを強制的に追加 * * @param classPathUrl クラスパス * @throws IOException クラスパスの動的追加に失敗 */ private static void addClassPath(URL classPathUrl) throws IOException { URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class<?> sysclass = URLClassLoader.class; try { Method method = sysclass.getDeclaredMethod("addURL", PARAMETERS); method.setAccessible(true); method.invoke(sysloader, new Object[] { classPathUrl }); } catch (NoSuchMethodException e) { throw new IOException("could not add " + classPathUrl + " to classpath"); } catch (InvocationTargetException e) { throw new IOException("could not add " + classPathUrl + " to classpath"); } catch (IllegalAccessException e) { throw new IOException("could not add " + classPathUrl + " to classpath"); } } /** * ファイル名から拡張子を返却 * * @param fileName ファイル名 * @return ファイルの拡張子 */ private static String getSuffix(String fileName) { if (fileName == null) { return null; } int point = fileName.lastIndexOf("."); if (point != -1) { return fileName.substring(point + 1); } return fileName; } } 

การสนับสนุนของ UAC [C #] โปรแกรม

หมายเหตุถ้าคุณต้องการที่จะเปลี่ยนพฤติกรรมในสิทธิทั่วไปและการบริหารและสิทธิประโยชน์ทางด้านการประยุกต์ใช้

  1. ตัดสินจากข้อมูลไม่ว่าจะเป็นรุ่นของระบบปฏิบัติการได้เริ่มต้นตั้งแต่ WindowsVista เป็น <br /> หรือโปรแกรมที่กำลังทำงานใน (OS ที่มี UAC) และต่อมา WindowsVista

     using System; private bool IsUAC() { OperatingSystem osInfo = Environment.OSVersion; if (osInfo.Platform == PlatformID.Win32NT) { if (osInfo.Version.Major == 6) { if (osInfo.Version.Minor == 0) { // Windows Vista, Windows Server 2008 return true; } else if (osInfo.Version.Minor == 1) { // Windows 7, Windows Server 2008 R2 return true; } } else if (osInfo.Version.Major > 6) { // new Windows return true; } } return false; } 
  2. เมื่อพวกเขาอยู่ ... "Run as administrator" คือ <br /> หรือโปรแกรมประยุกต์ได้เริ่มต้นโปรแกรมประยุกต์ที่มีสิทธิ์ของผู้ดูแล

     using System.Security.Principal; private bool IsAdministrator() { bool isAllowed = false; try { WindowsIdentity wi = WindowsIdentity.GetCurrent(); WindowsPrincipal wp = new WindowsPrincipal(wi); isAllowed = wp.IsInRole(WindowsBuiltInRole.Administrator); } catch { isAllowed = false; } return isAllowed; } 
  3. ผู้ใช้ที่เริ่มต้นโปรแกรม <br /> ถ้าคุณต้องการทราบว่าแอพลิเคชันที่สามารถส่งเสริมให้กับผู้ใช้ของผู้ดูแลผู้ที่เริ่มต้นแม้ว่าจะได้เริ่มต้นที่มีสิทธิ์ที่อยู่ในกลุ่มผู้ดูแลระบบหรือทั่วไป

     using System.DirectoryServices.AccountManagement; private bool IsAdministrators() { bool isAllowed = false; try { PrincipalContext pc = new PrincipalContext(ContextType.Machine, null); UserPrincipal up = UserPrincipal.Current; GroupPrincipal gp = GroupPrincipal.FindByIdentity(pc, "Administrators"); if (up.IsMemberOf(gp)) { isAllowed = true; } } catch { isAllowed = false; } return isAllowed; } 

    เหมือนไม่ได้ทำงานได้ดีในสภาพแวดล้อมบางอย่างและที่รหัสดังกล่าว? อาจมั่นใจได้ว่ามากขึ้นจากโค้ดด้านล่าง

     using System.DirectoryServices.AccountManagement; private bool IsAdministrators() { bool isAllowed = false; try { PrincipalContext pc = new PrincipalContext(ContextType.Machine, null); UserPrincipal up = UserPrincipal.Current; foreach (GroupPrincipal gp in up.GetGroups()) { try { if (gp.Name.ToLower().Equals("Administrators".ToLower())) { isAllowed = true; } } finally { gp.Dispose(); } } } catch { isAllowed = false; } return isAllowed; } 
  4. ด้วยสิทธิ์ผู้ดูแลระบบเพื่อรีสตาร์ทตัวเองถ้าผู้มีอำนาจในการบริหารที่ถูกต้องเมื่อมีการประมวลผล <br /> รีสตาร์ทแอพพลิเคชันที่มีสิทธิ์ของผู้ดูแล

     using System; using System.Diagnostics; private void RestartApplication() { ProcessStartInfo psi = new ProcessStartInfo(); psi.UseShellExecute = true; psi.WorkingDirectory = Environment.CurrentDirectory; psi.FileName = Application.ExecutablePath; psi.Verb = "runas"; try { Process p = Process.Start(psi); } catch { return; } Application.Exit(); } 
  5. เมื่อต้องการแสดงไอคอนของ (แนวตั้ง) UAC ที่ปุ่มแจ้งให้ผู้ใช้ที่จะต้องใช้สิทธิ์ของผู้ดูแลระบบเพื่อดำเนินการต่อการดำเนินงานเพื่อแสดง <br /> ไอคอน (แนวตั้ง) UAC เพื่อปุ่มที่จะต้องมีสิทธิ์ของผู้ดูแล (ไอคอนโล่ห์และสถานที่ให้บริการ Win32API โล่ที่ไอคอน SystemIcons.Shield มีความแตกต่างก็ถูกใช้เป็นมาตรฐานใน Windows 7. ซึ่งเป็น Win32 เพิ่มเติม API)

     using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Sample { public partial class Form1 : Form { [DllImport("user32.dll")] private static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam); // 第2パラメータ:盾アイコンを設定するフラグ uint BCM_SETSHIELD = 0x0000160C; public Form1() { InitializeComponent(); // ボタンの外観を「System」にする必要がある button1.FlatStyle = FlatStyle.System; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { // 第1パラメータ:ボタンのウィンドウ・ハンドル HandleRef hwnd = new HandleRef(button1, button1.Handle); if (checkBox1.Checked) { SendMessage(hwnd, BCM_SETSHIELD, new IntPtr(0), new IntPtr(1)); } else { SendMessage(hwnd, BCM_SETSHIELD, new IntPtr(0), new IntPtr(0)); } } } } 

PSP ฟิวส์เปลี่ยนแสงไฟ

PSPのバックライトヒューズの位置
หน้าจอ PSP-1000 ไม่ปรากฏทันที
ผมได้ยินเสียงเสียงที่ได้ยินยังเป็นปุ่ม

และจ้องมองอย่างหนัก, การแสดงผลกราฟิกบางーได้รับ

มาอย่างแท้จริงผู้บุกเบิกและตรวจสอบข้อมูลเกี่ยวกับสุทธิแล้วแสงไฟที่จะคาดเดาได้หมดอายุแล้วจากสถานการณ์นี้

ทันทีสลายตัวแล้วพยายามตรวจสอบความต่อเนื่องของฟิวส์มันก็ขึ้นอยู่กับผมในการเผยแพร่สถานที่ตั้งของฟิวส์ของแสงไฟอย่างระมัดระวัง

ด้วยมัลติมิเตอร์แบบดิจิตอล แต่ปฏิกิริยาที่ไม่มีฟิวส์ตัวเองไม่ได้รู้ว่าสิ่งที่ถูกต้องของสี่เหลี่ยมขนาด 1005 ชิปฟิวส์ของมัน
ตัวอย่างเช่นมันจะไม่สามารถวัดหรือถ้ามีฟิล์มบาง ๆ บนพื้นผิว

ฉันตัดสินใจที่จะแทนที่กับข้อมูลจำเพาะ
ฟิวส์เปลี่ยนจาก 0.5A สำหรับ F4501
ครั้งแรกที่ผมคิดว่าให้ขึ้นไม่ละลายประสาน แต่คิดว่าคุณจะเปลี่ยนเป็นนโยบาย
ดังนั้นเราจึงตัดสินใจที่จะใส่ในแบบคู่ขนาน
(ถ้าฟิวส์ที่มีอยู่ยังมีชีวิตอยู่เพราะปัจจุบันถูกแบ่งออก) ถ้าเรื่องนี้อย่างเคร่งครัดพูด แต่ก็ยังไม่ดี
ก็ถือว่ากู้คืนได้ถ้าแสงไฟในงานนี้, ฟิวส์ไม่ได้เป็นเช่นเดียวกับการปิด
แยกเป็นถ้าไม่มีสาเหตุที่ดีคือดังนั้นโดยการลบที่ดี

คืองานการกู้คืนได้ดำเนินการอย่างปลอดภัย backlight
PSP คือการเล่นกับอีกครั้ง

ซ่อมแซม KuroBox ของอำนาจ

玄箱の電源回路のヒューズ リード付きヒューズ
เสียบไฟยังคงเป็นน้องสาว KuroBox ตั้งใจสัมผัสพลังทราบว่าตั้งแต่ทำงานซ่อมแซมต้องปิดฟิวส์

Gen เป็นสิ่งแรกของกล่อง unbranded
แต่จริงๆแล้วมันเป็นไปดึงปลั๊กไฟฟ้าถูกดึงปลั๊กไฟออกอื่น KuroBox อำนาจก็ไม่ได้หายไป
จุดประกายฟ้าเสียชีวิตจะสัมผัสเท้ากับฟิวส์ของพลังของความต้านทานเนื่องจากการทำงานในฐานะที่ขาดหายไป

พาวเวอร์ไม่ได้ใส่ตามที่คาดไว้ยังที่จะใช้อำนาจในมือที่จะไปนอนอยู่ในดวงตาได้โดยไม่ต้องรีบร้อนให้เพื่อให้แน่ใจว่าคุณยังไม่ได้ล้มเหลว
ใช่ถ้าอำนาจเป็นไปหาง KuroBox หากเกิดเหตุการณ์นี้สายเกินไป

มีการกู้คืนและแทนที่ฟิวส์ต้องไม่ได้มีลักษณะเหมือนคนที่เป็นระยะสั้นในสุทธิในขณะที่กำลังมองหา dents ข้อมูล

แต่สำหรับตอนนี้แม้ว่าตัวเองฟิวส์เป่าของคุณหรือไม่ เมื่อต้องการตรวจสอบความต่อเนื่องของฟิวส์ (F1) ด้วยมัลติมิเตอร์แบบดิจิตอลและคิดว่า
ผลลัพท์ไม่ได้รับการดำเนินการ ซึ่งหมายความว่าฟิวส์หมดอายุ
นี้อาจจะโชคดี
ฟิวส์จากวงจรหมายถึงการตัดออกเพื่อไม่ให้เกิดความเสียหายวงจรเมื่อมันกลายเป็นแรงดันที่มากเกินไปในปัจจุบันหรือมากเกินไปอุณหภูมิวงจรที่ผิดปกติการป้องกันมีความเป็นไปได้อะไรส่วนอื่นไม่เสียหายเพราะ อาจจะโชคดีที่
และที่คุณสามารถเห็นความต่อเนื่องของฟิวส์ไปในทางตรงกันข้ามจะเป็นส่วนหนึ่งของอื่น ๆ ที่ได้รับความเสียหายก็เป็นเรื่องยากที่จะระบุสาเหตุ

ดี Onuma ถูกวิทยุศูนย์กำลังมองหาฟิวส์ 3A ใน Akihabara ด้วยตะกั่วขึ้นอยู่กับข้อมูลบนเน็ต
อยู่ที่ 150 เยนในสอง ปัญหาที่เกิดขึ้นถูกค้นพบด้วยการเดินทางกลับในขณะที่และฉันคิดว่า Akihabara แน่นอนทำงานและทันทีที่การแลกเปลี่ยน

เพราะมันถูกเขียนด้วยฟิวส์ 2A ถ้าคุณมองอย่างใกล้ชิดที่เดิม
แต่ย้ายจาก 3A ฟิวส์ตัวเอง แต่สิ่งเดียวที่เชื่อมต่อวงจรแม้ในขณะที่มันเป็น 2A overcurrent กลายเป็นปกติท​​ี่จะ 3A
ทั้งนี้เป็นเพราะความเสียหายที่อาจเกิดขึ้นกับส่วนอื่น ๆ ของฟิวส์เมื่อ overcurrent เกิดการแลกเปลี่ยนคนใหม่ต้องการซื้อ 2A

ควรสังเกตก็คือสามารถที่จะติดได้โดยไม่มีปัญหากับนำนำของฟิวส์ที่ท่านได้ซื้อ แต่ก็เพียงเล็กน้อยหนา
และตรวจสอบให้แน่ใจว่าคุณสามารถประสบความสำเร็จเริ่มต้นเมื่ออำนาจคุณขึ้น

หากคุณพบว่าฟิวส์พยายามแทนที่ 2A ตะกั่ว···

การสร้างและการลงนามในใบรับรองของผู้เผยแพร่ [VS] ซอฟแวร์

หมายเหตุจากลายเซ็นวิธีสำหรับวิธีการสร้างและลงลายมือชื่อรับรองในการสร้างกิจกรรม

หากคุณต้องการใช้ในการติดตั้ง ClickOnce VSTO หรือใบรับรอง self-signed ใบรับรองให้เป็นไป Oreore และเขาได้สิ่งที่คุณต้อง
เครื่องมือที่คุณใช้ WindowsSDK ซึ่งรวมอยู่ใน

  • วิธีการสร้าง
     rem 1.==== rem CA:Certificate Authority:認証局証明書rem 会社名 : MoonWing rem 組織名 : MoonWing Authority Root CA rem 県 名 : Tokyo rem 国 名 : JP rem 有効期限: 2012.12.31 "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\makecert" -r -n "C=JP, S=Tokyo, OU=MoonWing Authority Root CA, O=MoonWing" -e 12/31/2012 -a sha1 -cy authority -sv moonwingCA.pvk moonwingCA.cer rem 秘密キーのパスワードの作成:Subject Key: rootCA rem 秘密キーのパスワードの入力:Subject Key: rootCA rem 2.==== rem EE:End Entity:署名用証明書rem コモン名: MoonWing rem 会社名 : MoonWing rem 組織名 : MoonWing Development rem 県 名 : Tokyo rem 国 名 : JP rem 有効期限: 2012.12.31 "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\makecert" -n "CN=MoonWing, C=JP, S=Tokyo, O=MoonWing, OU=MoonWing Development" -e 12/31/2012 -sv moonwing.pvk -ic moonwingCA.cer -iv moonwingCA.pvk -nscp -cy end moonwing.cer rem 秘密キーのパスワードの作成:Subject Key: endEntity rem 秘密キーのパスワードの入力:Subject Key: endEntity rem 秘密キーのパスワードの入力:Issuer Signature: rootCA rem 3.==== rem SPC:Software Publisher's Certificate:ソフトウェア発行元証明書"%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\Cert2SPC" moonwing.cer moonwingCA.cer moonwing.spc rem 4.==== rem PFX:Personal Information Exchange:PKCS#12 rem -pi(pvkpassword):endEntity rem -po(pfxpassword):SPC "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\pvk2pfx" -pvk moonwing.pvk -pi endEntity -spc moonwing.spc -pfx moonwing.pfx -po SPC 
  • วิธีการที่ลายเซ็น
     rem 5.==== rem target.exeへ署名rem -t(time stamp server):http://timestamp.verisign.com/scripts/timstamp.dll rem -p(pfxpassword):SPC "%ProgramFiles%\Microsoft SDKs\Windows\v7.1\Bin\signtool" sign /f moonwing.pfx /a /t http://timestamp.verisign.com/scripts/timstamp.dll /p SPC target.exe 

รุ่นมาตรฐานอย่างย่อ [VS] PIA

เวอร์ชันของตาราง. รุ่น NetFramework ของ PIA กับรุ่นของ Office และ ตาราง VSTO สร้างขึ้นในการผ่าน
PIA คือ ... และที่ PrimaryInteropAssembly เพิ่มเติมไมโครซอฟท์ ได้โปรดถาม

PIA สนับสนุนสำนักงาน สนับสนุน NetFramework. สนับสนุน Windows
XP XP 1.1 XP
2003 2003 1.1 SP3 2000, XP, Server 2003
2007 2007 1.1 2000 SP4, XP SP2, Server 2003
2010 2010 2.0 หรือสูงกว่า 2000 SP4, XP SP2, Server 2003, Vista, 7, Server 2008

รุ่นมาตรฐานอย่างย่อ [VS] VSTO

ถูกสร้างขึ้นมาเพราะต้องการรุ่นของตาราง. รุ่น NetFramework และรุ่นของ Office และ VSTO
VSTO และ

  • Microsoft Visual Studio 2005 เครื่องมือสำหรับ Office Second Edition Runtime
  • Microsoft Visual Studio 2005 Tools สำหรับระบบ Microsoft Office 2007
  • ไมโครซอฟท์ Visual Studio Tools สำหรับระบบ Microsoft Office (Version 3.0 Runtime)
  • Microsoft Visual Studio 2010 Tools สำหรับระบบ Microsoft Office (4.0 เวอร์ชัน Runtime)

สำหรับการขยายสำนักงานขององค์ประกอบที่เป็นที่ชื่อมีการเปลี่ยนแปลงอย่างละเอียดด้วย
โดยทั่วไปไม่ควรมีปัญหาถ้าต่อไปนี้สามสองตาข้างต้นถูกละเว้น
(ฉันอาจ. หรือว่ายังละเว้นสามคนแรก แต่ก็จะไม่สามารถให้ตรงกับสองสิ้นสุดใน 2003,2007,2010)

VSTO สนับสนุนสำนักงาน สนับสนุน NetFramework. VisualStduio สนับสนุน สนับสนุน Windows
2005 SE 2003, 2007 2.0 2005 2000, XP, Server 2003, Vista, 7, Server 2008
3.0 2007 3.5 SP1 2008 2000, XP, Server 2003, Vista, 7, Server 2008
4.0 2007,2010 3.5 SP1 2010 XP, Server 2003, Vista, 7, Server 2008

Directives

หมายเหตุ: เพื่อแยกส่วนของคำสั่ง preprocessor ​​แพลตฟอร์มขึ้นอยู่กับเมื่อเขียนรหัสข้ามแพลตฟอร์ม

  • คอมไพเลอร์
    • GCC
      • ifdef __ # GNUC__
        • หรือมากกว่าถ้า __ # GNUC__> = 3 / / GCC3.0
    • Borland C + +
      • ifdef __ # BORLANDC__
    • คอมไพเลอร์ของอินเทล
      • # ifdef __ INTEL_COMPILER
    • คอมไพเลอร์ของ Microsoft
      • _MSC_VER # ifdef
        • # VC ภายหลังหาก _MSC_VER> = 600 / / C Compiler 6.0 + ได้แก่
        • # VC ภายหลังหาก _MSC_VER> = 700 / / C / C + + Compiler 7.0 + ได้แก่
        • # ภายหลังหาก _MSC_VER> = 800 / / VC + 1.0
        • # ภายหลังหาก _MSC_VER> = 900 / / VC + 2.0
        • # ภายหลังหาก _MSC_VER> = 1000 / / VC + 4.0
        • # ภายหลังหาก _MSC_VER> = 1010 / / VC + 4.1
        • # ภายหลังหาก _MSC_VER> = 1020 / / VC + 4.2
        • # ภายหลังหาก _MSC_VER> = 1100 / / VC + 5.0
        • # ภายหลังหาก _MSC_VER> = 1200 / / VC + 6.0
        • # ถ้า _MSC_VER> = 1300 / / VC2002 ภายหลัง (VC7.0)
        • # ถ้า _MSC_VER> = 1310 / / VC2003 ภายหลัง (VC7.1)
        • # ถ้า _MSC_VER> = 1400 / / VC2005 ภายหลัง (VC8.0)
        • # ถ้า _MSC_VER> = 1500 / / VC2008 ภายหลัง (VC9.0)
        • # ถ้า _MSC_VER> = 1600 / / VC2010 ภายหลัง (VC10.0)
  • ระบบ UNIX
    • ยูนิกซ์
      • # ifdef __ ยูนิกซ์
      • ifdef __ # unix__
    • ลินุกซ์
      • # ifdef __ ลินุกซ์
      • ifdef __ # linux__
    • FreeBSD
      • ifdef __ # FreeBSD__
    • NetBSD
      • ifdef __ # NetBSD__
    • Cygwin
      • ifdef __ # CYGWIN__
      • # รุ่น Cygwin ifdef __ CYGWIN32__ / / 32bit
    • MinGW (-mno-cygwin)
      • ifdef __ # MINGW32__
  • ระบบ Windows
    • CUI
      • # ifdef _CONSOLE
    • GUI
      • _WINDOWS # ifdef
    • ใช้ Windows 32bit
      • WIN32 # ifdef
      • # ifdef _WIN32
    • ใช้ Windows 64bit
      • # ifdef _WIN64
    • รุ่น Windows
      • WINVER # ifdef
        • ตั้งแต่ # if (WINVER> = 0x030a) / / Windows 3.1
        • ตั้งแต่ # 95 / NT4.0 (WINVER> = 0 × 0400) / Windows / ถ้า
        • ตั้งแต่ # if (WINVER> = 0 × 0410) / / Windows 98
        • ตั้งแต่ # if (WINVER> = 0 × 0500) / / Windows Me / 2000
        • ตั้งแต่ # if (WINVER> = 0 × 0501) / / Windows XP / Server 2003
        • # ตั้งแต่ปี 2003 SP1 (WINVER> = 0 × 0502) / / Windows XP SP2 / Server ถ้า
        • ตั้งแต่ # if (WINVER> = 0 × 0600) / / Windows Vista / Server 2008
        • ตั้งแต่ # if (WINVER> = 0 × 0601) / / Windows 7
      • # ifdef _WIN32_WINDOWS / / Windows9x
        • # หากภายหลัง (_WIN32_WINDOWS> = 0 × 0400) / / Windows 95
        • # หากภายหลัง (_WIN32_WINDOWS> = 0 × 0410) / / Windows 98
        • # หากภายหลัง (_WIN32_WINDOWS> = 0 × 0500) / / Windows Me
      • # ifdef _WIN32_WINNT / / WindowsNTx
        • / / ตั้งแต่ Windows 2000 (0 × 0500)
          # ถ้า (_WIN32_WINNT> _WIN32_WINNT_WIN2K =)
        • / / ตั้งแต่ปี 2003 Windows XP / Server (0 × 0501)
          # ถ้า (_WIN32_WINNT> = _WIN32_WINNT_WINXP)
        • / / พ. 2003 SP1 Windows XP SP2 / Server (0 × 0502)
          # ถ้า (_WIN32_WINNT> = _WIN32_WINNT_WS03)
        • / / จาก Windows Vista (0 × 0600)
          # ถ้า (_WIN32_WINNT> = _WIN32_WINNT_VISTA)
        • / / จาก Windows Server 2008 (0 × 0600)
          # ถ้า (_WIN32_WINNT> = _WIN32_WINNT_WS08)
        • / / จาก Windows 7 (0 × 0601)
          # ถ้า (_WIN32_WINNT> = _WIN32_WINNT_WIN7)
      • # ifdef _WIN32_WCE / / WindowsCE
        • # ถ้า (_WIN32_WCE> = 0 × 0420) / / Windows Mobile 2003 (PPC2003)
        • # ถ้า (_WIN32_WCE> = 0 × 0421) / / Windows Mobile 2003 SE (PPC2003SE)
        • # ถ้า (_WIN32_WCE> = 0 × 0501) / / Windows Mobile 5.0
        • # ถ้า (_WIN32_WCE> = 0 × 0502) / / Windows Mobile 6 Professional / คลาสสิก
        • # ถ้า (WINCEOSVER> = 0 × 0300) / / WindowsCE3.0 ภายหลัง (PPC2002)
        • # ถ้า (WINCEOSVER> = 0 × 0420) / / WindowsCE4.2 ภายหลัง (PPC2003)
        • # ถ้า (WINCEOSVER> = 0 × 0500) / / WindowsCE5.0 ภายหลัง (WM5.0)
    • รุ่น Internet Explorer
      • _WIN32_IE # ifdef
        • # ถ้า (_WIN32_IE> = 0 × 0200) / / Windows 95/NT 4.0 (Comctl32.dll 4.00, 4.00 Shell32.dll)
        • # ถ้า (_WIN32_IE> = 0 × 0300) / / Internet Explorer 3.0, 3.01, 3.02
        • # ถ้า (_WIN32_IE> = 0 × 0400) / / Internet Explorer 4.0
        • # ถ้า (_WIN32_IE> = 0 × 0401) / / Internet Explorer 4.01
        • # ถ้า (_WIN32_IE> = 0 × 0500) / / Internet Explorer 5.0, 5.0a, 5.0b
        • # ถ้า (_WIN32_IE> = 0 × 0501) / / Internet Explorer 5.01
        • # ถ้า (_WIN32_IE> = 0 × 0550) / / Internet Explorer 5.5
        • # ถ้า (_WIN32_IE> = 0 × 0600) / / Internet Explorer 6.0
        • # ถ้า (_WIN32_IE> = 0 × 0601) / Internet / Explorer 6.0 SP1
        • # ถ้า (_WIN32_IE> = 0 × 0603) / Internet / Explorer 6.0 SP2
        • # ถ้า (_WIN32_IE> = 0 × 0700) / / 7.0 Internet Explorer
        • # ถ้า (_WIN32_IE> = 0 × 0800) / / Internet Explorer 8.0

หมายเหตุ preprocessor /> <br ในการรักษาเป็นตัวระบุที่ไม่ได้กำหนด 0, # ถ้า __ GNUC__> = 3 หรือมากขึ้น แต่สามารถใช้เป็น GCC3,
หากคุณพยายามที่จะกำหนด # ถ้า __ GNUC__ <3 ว่าระบบ GCC2, รวมถึงผู้ที่ไม่ได้เป็น GCC
การอ้างอิง

รับรุ่นของ Windows

แต่ผมไม่คิดว่าฉันสามารถใช้คร่าวทราบ
ถ้าคอมไพเลอร์สามารถรวบรวมได้โดยไม่มีปัญหาและฉันคิดว่าระบบ Windows
แน่นอนรวบรวมและยืนยันการดำเนินการถูกหามออกใน MinGW

 #include <windows.h> #include <stdio.h> int main(void) { unsigned int GV = GetVersion(); printf("GetVersion API(GV) = %08X\n\n", GV); printf("_winver = %08X\n", _winver); printf("_winmajor = %08X\n", _winmajor); printf("_winminor = %08X\n", _winminor); printf("_osver = %08X\n\n", _osver); printf("(( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF = %08X (= _winver)\n", (( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF ); printf("GV & 0XFF = %08X (= _winmajor)\n", GV & 0XFF ); printf("( GV >> 8 ) & 0XFF = %08X (= _winminor)\n", (( GV >> 8 ) & 0XFF)); printf("GV >> 16 = %08X (= _osver)\n\n\n", (GV >> 16) ); // Windows version(_winmajor, _winminor, _osver) printf("This system is ["); if ( _osver < 0X8000 ) { // NT Group (_osver LowWORD MSB = 0) switch (_winmajor) { case 3: case 4: printf ("Windows NT %u.%u Build %u", _winmajor, _winminor, _osver); break; case 5: switch (_winminor) { case 0: printf ("Windows 2000 Build %u", _osver); break; case 1: printf ("Windows XP Build %u", _osver); break; case 2: printf ("Windows Server 2003 family Build %u", _osver); break; default: printf ("NT Group Windows Build %u", _osver); } break; case 6: switch (_winminor) { case 0: printf ("Windows Vista or Windows Server 2008 Build %u", _osver); break; case 1: printf ("Windows 7 Build %u", _osver); break; default: printf ("NT Group Windows Build %u", _osver); } break; default: printf ("NTGroup Windows Build %u", _osver); } } else { switch (_winmajor ) { case 0: //Win32s Group case 1: case 2: case 3: printf ("Win32s Build %u", _osver & 0X7FFF); break; case 4: // 9X Group (_osver is invalid.) switch (_winminor) { case 0: printf ("Windows 95 Build ----"); break; case 10: printf ("Windows 98 Build ----"); break; case 90: printf ("Windows Me Build ----"); break; default: // To make sure printf ("Newer than Windows Me"); } break; default: // To make sure printf ("Newer than Windows Me"); } } printf("]"); return 0; } 
1 2 3

หน้าแรก > เอกสาร

ค้นหา
อาหาร
การแปล
Japanese flagItalian flagKorean flagChinese (Simplified) flagChinese (Traditional) flagEnglish flagGerman flagFrench flagRussian flagVietnamese flagThai flag

กลับไปที่ด้านบนของหน้า