หน้าแรก > เอกสาร
เอกสารเก่าของวัสดุ
หมายเหตุ: "คุณมีเกินจำนวนสูงสุดของเคอร์เซอร์ ORA-01000 เปิด" [Java]
- 29 มิถุนายน 2011 12:00 น.
- วัสดุ
หมายเหตุเกี่ยวกับข้อผิดพลาดของ 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] เส้นทางการเรียน
- 20 มิถุนายน 2011 12:00 น.
- วัสดุ
หมายเหตุ: ตอนนี้ที่เราได้ดำเนินการในทางของฉันเองฉันมองและคุณต้องการที่จะสร้างโปรแกรมที่มีการอ้างอิงถึงชะลอของ 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 #] โปรแกรม
- 17 เมษายน 2011 12:00 น.
- วัสดุ
หมายเหตุถ้าคุณต้องการที่จะเปลี่ยนพฤติกรรมในสิทธิทั่วไปและการบริหารและสิทธิประโยชน์ทางด้านการประยุกต์ใช้
- ตัดสินจากข้อมูลไม่ว่าจะเป็นรุ่นของระบบปฏิบัติการได้เริ่มต้นตั้งแต่ 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; } - เมื่อพวกเขาอยู่ ... "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; } - ผู้ใช้ที่เริ่มต้นโปรแกรม <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; } - ด้วยสิทธิ์ผู้ดูแลระบบเพื่อรีสตาร์ทตัวเองถ้าผู้มีอำนาจในการบริหารที่ถูกต้องเมื่อมีการประมวลผล <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(); } - เมื่อต้องการแสดงไอคอนของ (แนวตั้ง) 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 ฟิวส์เปลี่ยนแสงไฟ
- 5 มกราคม 2011 00:00 น.
- วัสดุ
หน้าจอ PSP-1000 ไม่ปรากฏทันที
ผมได้ยินเสียงเสียงที่ได้ยินยังเป็นปุ่ม
และจ้องมองอย่างหนัก, การแสดงผลกราฟิกบางーได้รับ
มาอย่างแท้จริงผู้บุกเบิกและตรวจสอบข้อมูลเกี่ยวกับสุทธิแล้วแสงไฟที่จะคาดเดาได้หมดอายุแล้วจากสถานการณ์นี้
ทันทีสลายตัวแล้วพยายามตรวจสอบความต่อเนื่องของฟิวส์มันก็ขึ้นอยู่กับผมในการเผยแพร่สถานที่ตั้งของฟิวส์ของแสงไฟอย่างระมัดระวัง
ด้วยมัลติมิเตอร์แบบดิจิตอล แต่ปฏิกิริยาที่ไม่มีฟิวส์ตัวเองไม่ได้รู้ว่าสิ่งที่ถูกต้องของสี่เหลี่ยมขนาด 1005 ชิปฟิวส์ของมัน
ตัวอย่างเช่นมันจะไม่สามารถวัดหรือถ้ามีฟิล์มบาง ๆ บนพื้นผิว
ฉันตัดสินใจที่จะแทนที่กับข้อมูลจำเพาะ
ฟิวส์เปลี่ยนจาก 0.5A สำหรับ F4501
ครั้งแรกที่ผมคิดว่าให้ขึ้นไม่ละลายประสาน แต่คิดว่าคุณจะเปลี่ยนเป็นนโยบาย
ดังนั้นเราจึงตัดสินใจที่จะใส่ในแบบคู่ขนาน
(ถ้าฟิวส์ที่มีอยู่ยังมีชีวิตอยู่เพราะปัจจุบันถูกแบ่งออก) ถ้าเรื่องนี้อย่างเคร่งครัดพูด แต่ก็ยังไม่ดี
ก็ถือว่ากู้คืนได้ถ้าแสงไฟในงานนี้, ฟิวส์ไม่ได้เป็นเช่นเดียวกับการปิด
แยกเป็นถ้าไม่มีสาเหตุที่ดีคือดังนั้นโดยการลบที่ดี
คืองานการกู้คืนได้ดำเนินการอย่างปลอดภัย backlight
PSP คือการเล่นกับอีกครั้ง
ซ่อมแซม KuroBox ของอำนาจ
- 4 มกราคม 2011 00:00 น.
- วัสดุ
เสียบไฟยังคงเป็นน้องสาว KuroBox ตั้งใจสัมผัสพลังทราบว่าตั้งแต่ทำงานซ่อมแซมต้องปิดฟิวส์
Gen เป็นสิ่งแรกของกล่อง unbranded
แต่จริงๆแล้วมันเป็นไปดึงปลั๊กไฟฟ้าถูกดึงปลั๊กไฟออกอื่น KuroBox อำนาจก็ไม่ได้หายไป
จุดประกายฟ้าเสียชีวิตจะสัมผัสเท้ากับฟิวส์ของพลังของความต้านทานเนื่องจากการทำงานในฐานะที่ขาดหายไป
พาวเวอร์ไม่ได้ใส่ตามที่คาดไว้ยังที่จะใช้อำนาจในมือที่จะไปนอนอยู่ในดวงตาได้โดยไม่ต้องรีบร้อนให้เพื่อให้แน่ใจว่าคุณยังไม่ได้ล้มเหลว
ใช่ถ้าอำนาจเป็นไปหาง KuroBox หากเกิดเหตุการณ์นี้สายเกินไป
มีการกู้คืนและแทนที่ฟิวส์ต้องไม่ได้มีลักษณะเหมือนคนที่เป็นระยะสั้นในสุทธิในขณะที่กำลังมองหา dents ข้อมูล
แต่สำหรับตอนนี้แม้ว่าตัวเองฟิวส์เป่าของคุณหรือไม่ เมื่อต้องการตรวจสอบความต่อเนื่องของฟิวส์ (F1) ด้วยมัลติมิเตอร์แบบดิจิตอลและคิดว่า
ผลลัพท์ไม่ได้รับการดำเนินการ ซึ่งหมายความว่าฟิวส์หมดอายุ
นี้อาจจะโชคดี
ฟิวส์จากวงจรหมายถึงการตัดออกเพื่อไม่ให้เกิดความเสียหายวงจรเมื่อมันกลายเป็นแรงดันที่มากเกินไปในปัจจุบันหรือมากเกินไปอุณหภูมิวงจรที่ผิดปกติการป้องกันมีความเป็นไปได้อะไรส่วนอื่นไม่เสียหายเพราะ อาจจะโชคดีที่
และที่คุณสามารถเห็นความต่อเนื่องของฟิวส์ไปในทางตรงกันข้ามจะเป็นส่วนหนึ่งของอื่น ๆ ที่ได้รับความเสียหายก็เป็นเรื่องยากที่จะระบุสาเหตุ
ดี Onuma ถูกวิทยุศูนย์กำลังมองหาฟิวส์ 3A ใน Akihabara ด้วยตะกั่วขึ้นอยู่กับข้อมูลบนเน็ต
อยู่ที่ 150 เยนในสอง ปัญหาที่เกิดขึ้นถูกค้นพบด้วยการเดินทางกลับในขณะที่และฉันคิดว่า Akihabara แน่นอนทำงานและทันทีที่การแลกเปลี่ยน
เพราะมันถูกเขียนด้วยฟิวส์ 2A ถ้าคุณมองอย่างใกล้ชิดที่เดิม
แต่ย้ายจาก 3A ฟิวส์ตัวเอง แต่สิ่งเดียวที่เชื่อมต่อวงจรแม้ในขณะที่มันเป็น 2A overcurrent กลายเป็นปกติที่จะ 3A
ทั้งนี้เป็นเพราะความเสียหายที่อาจเกิดขึ้นกับส่วนอื่น ๆ ของฟิวส์เมื่อ overcurrent เกิดการแลกเปลี่ยนคนใหม่ต้องการซื้อ 2A
ควรสังเกตก็คือสามารถที่จะติดได้โดยไม่มีปัญหากับนำนำของฟิวส์ที่ท่านได้ซื้อ แต่ก็เพียงเล็กน้อยหนา
และตรวจสอบให้แน่ใจว่าคุณสามารถประสบความสำเร็จเริ่มต้นเมื่ออำนาจคุณขึ้น
หากคุณพบว่าฟิวส์พยายามแทนที่ 2A ตะกั่ว···
การสร้างและการลงนามในใบรับรองของผู้เผยแพร่ [VS] ซอฟแวร์
- พฤศจิกายน 27, 2010 12:00 AM
- วัสดุ
หมายเหตุจากลายเซ็นวิธีสำหรับวิธีการสร้างและลงลายมือชื่อรับรองในการสร้างกิจกรรม
หากคุณต้องการใช้ในการติดตั้ง 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
- พฤศจิกายน 19, 2010 12:00 AM
- วัสดุ
เวอร์ชันของตาราง. รุ่น 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
- พฤศจิกายน 18, 2010 12:00 AM
- วัสดุ
ถูกสร้างขึ้นมาเพราะต้องการรุ่นของตาราง. รุ่น 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
- 4 สิงหาคม 2010 12:00 น.
- วัสดุ
หมายเหตุ: เพื่อแยกส่วนของคำสั่ง preprocessor แพลตฟอร์มขึ้นอยู่กับเมื่อเขียนรหัสข้ามแพลตฟอร์ม
- คอมไพเลอร์
- GCC
- ifdef __ # GNUC__
- หรือมากกว่าถ้า __ # GNUC__> = 3 / / GCC3.0
- ifdef __ # GNUC__
- 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)
- _MSC_VER # ifdef
- GCC
- ระบบ 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)
- / / ตั้งแต่ Windows 2000 (0 × 0500)
- # 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)
- WINVER # ifdef
- รุ่น 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
- _WIN32_IE # ifdef
- CUI
หมายเหตุ preprocessor /> <br ในการรักษาเป็นตัวระบุที่ไม่ได้กำหนด 0, # ถ้า __ GNUC__> = 3 หรือมากขึ้น แต่สามารถใช้เป็น GCC3,
หากคุณพยายามที่จะกำหนด # ถ้า __ GNUC__ <3 ว่าระบบ GCC2, รวมถึงผู้ที่ไม่ได้เป็น GCC
การอ้างอิง
รับรุ่นของ Windows
- 29 กรกฎาคม 2010 12:00 น.
- วัสดุ
แต่ผมไม่คิดว่าฉันสามารถใช้คร่าวทราบ
ถ้าคอมไพเลอร์สามารถรวบรวมได้โดยไม่มีปัญหาและฉันคิดว่าระบบ 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; } หน้าแรก > เอกสาร
- ค้นหา
- อาหาร
- การแปล










