應用程式可能執行在各個windows版:windowsxp,win7-32bit,win7-64bit,win8-32bit,win8-64bit.由於windows各個版本的使用者許可權的限制不同,同乙個開發環境編譯出來的應用程式,拿到各個系統中執行的效果是用差別的。其主要原因還是win7、win8加強了對應用程式操作許可權的限制。
一、乙個明顯的例子:
圖1.1 win8 普通使用者下的cmd
圖1.2 win8管理員下的cmd
圖1.3 win7執行cmd介面
上面兩個圖中,win7 win8都是以administrator登入的。但是,win7上直接在[執行]->cmd,直接是以管理員許可權啟動;而win8直接在[執行]->cmd,進入的是普通許可權的cmd介面,必須右鍵[以管理員身份執行]才能出現圖1.2介面。
網上的神人對於這個問題是這樣回答的:
圖1.4
二、許可權限制在程式中使用命令行時中引發的問題
2.1、使用普通使用者命令列去開啟一些服務
圖2.1
2.2、程式中以普通使用者形式去開啟一些服務:
圖2.2
2.1 和2.2的操作都失敗了,原因就是應用程式的操作許可權級數不夠。
這些問題該如何處理?
processstartinfo startinfo = new processstartinfo();
startinfo.filename = "cmd.exe";
startinfo.arguments = "/c c:\\windows\\system32\\cmd.exe";
startinfo.redirectstandardinput = true;
startinfo.redirectstandardoutput = true;
startinfo.redirectstandarderror = true;
startinfo.useshellexecute =false ;
startinfo.verb = "runas";
process process = new process();
process.startinfo = startinfo;
process.start();
process.standardinput.writeline("bcdedit");
process.standardinput.writeline("exit");
string strrst = process.standardoutput.readtoend();
process.waitforexit();
在program.cs如下操作(案例)
static void main(string args)
else }
2.3、使程式以管理員許可權啟動的實際案例**如下:
using system;
using system.collections.generic;
using system.linq;
using system.windows.forms;
using system.runtime.interopservices;
using system.io;
using system.text;
using system.diagnostics;
using system.threading;
namespace databasecreate }
} else // 用管理員使用者執行 }
} }
c#2010在windows8—64系統,寫的程式可以訪問電腦(其他軟體)的服務狀態,但不能開啟或關閉該服務
c#預設以管理員身份執行程式
讓C 程式自動以管理員方式執行
方法一 重新生成專案,再次開啟程式時就會提示需要以管理員許可權執行。方法二 最近在用c 做乙個簡單的小軟體時,發現軟體在xp 和windows 2003下面執行都很正常,在win7下面雙擊開啟,卻會出問題,導致軟體不能使用。把軟體開啟時 以管理員方式執行 軟體正常執行,看來啊,還是得預設就給軟體加上...
C 程式以管理員許可權執行
cosmic spy 在vista 和 windows 7 及更新版本的作業系統,增加了 uac 使用者賬戶控制 的安全機制,如果 uac 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄 系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但...
C 程式以管理員許可權執行
在vista 和 windows 7 及更新版本的作業系統,增加了 uac 使用者賬戶控制 的安全機制,如果 uac 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄 系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,...