顯示具有 Windows 相關 標籤的文章。 顯示所有文章
顯示具有 Windows 相關 標籤的文章。 顯示所有文章

2011年7月15日 星期五

Windows Service : 如何對已經安裝的Service 修改登入帳號/密碼 ( 3 )

3. Coding, 使用WMI更改特定服務的帳號密碼。
使用WMI也可以修改Service的資訊
關於WMI的資訊 可以參考這裡

我們使用C#來建立相關的code。
開啟專案後,要先加入必要的Reference。
System.Management

















再來加入using ~







最後就是相關的code了












這裡有幾個注意的要點:

  1. 路徑的格式:
    • Win32_Service.Name=MyServiceName
  2. 使用ManagementObject 與 ManagementPath 獲得該Service。
  3. 建立大小為10的 object 陣列,做為傳入的參數。
  4. 設定矩陣的第6、第7個,分別為user name 與 password。
  5. 使用InvokeMethod,呼叫"Change" method,並且傳入參數。

如此即可改變Windows Service相關的資訊了
更多的參考 可以看這裡

Windows Service : 如何對已經安裝的Service 修改登入帳號/密碼 ( 2 )

2. 在Visual Studio Command 直接下sc指令。
接下來是進階版的修改方式
直接在Visual Studio Command 下sc指令


首先,開啟Visual Studio Command,
(如果是用Win7,記得要用管理者權限開啟。)
接著輸入 "sc"。
可以看到關於sc的相關說明,
而其中的 config參數,是我們要的。
















關於config參數,
我們可以看到它可以修改Service的基本資訊,
其中就包括我們所需要的帳號/密碼。














按照說明:
輸入 sc config MyServiceName password= NewPassword
記得!! "= "   等號後面要空一格,否則會失敗。
至於成功的畫面,留給大家囉 ~

Windows Service : 如何對已經安裝的Service 修改登入帳號/密碼 (1)

之前工作遇到一個需求
客戶為了資安需求  會定期的更新主機的密碼
而公司的Service 會在密碼變更後 無法啟用
原因在於 當初安裝Service的帳號/密碼 是根據特定user
而非直接使用 Local Service等預設帳號

知道了問題 就開始尋找解決方案
有三種解決方式

  1. 直接到控制台的"服務" 修改密碼。
  2. 在Visual Studio Command 直接下sc指令。
  3. Coding, 使用WMI更改特定服務的帳號密碼。



1. 直接到控制台的"服務" 修改密碼。
路徑:開始 -> 控制台 -> 系統及安全性 -> 系統管理工具 -> 服務
開啟後如下:



選取要修改的服務 按滑鼠右鍵 選擇內容

選擇"登入",修改帳密,選擇確定,完成了 ~

















這算是最簡單的修改方式囉 ~
至於 上圖"帳號"旁邊的瀏覽
可以讓我們直接選擇系統有的帳號
這邊就不詳述了
有需要的話 下次再說 ~

2011年7月14日 星期四

Windows Service : 權限基本觀念

Windows Service撰寫好後 常會遇到一個問題
究竟要開給新出爐的Service 什麼權限
各個權限的差別  又在哪

MSDN上有對 Windows Service權限的說明
簡單的說
Windows Service對於權限有兩種定義:
  1. Service account permissions:
    • 該Service 根據登入帳號的權限,可以使用的電腦資源。
  2. Services permissions
    • 根據不同的 user or group,提供不同的操作權限。
簡單的說,
前者是決定Service能做哪些事情;後者是決定哪些人能對Service做操作。

Service account
有四種類型:
  1. Local System:
    • powerful account,具有系統的完整存取權限。
    • 權限範圍包括網域控制站上的目錄服務(directory service)。
  2. Local Service:
    • 類似 user account,是一個特別的內建帳戶。
    • 具有與 [Users] 群組相同等級的資源及物件存取權。
    • 作為 此帳戶執行的服務,會以不含認證的 null session 來存取網路資源。
  3. Network Service
    • 前兩項與Local Service相同
    • 作為此帳戶執行的服務,會使用電腦帳戶的認證來存取網路資源。
  4. User Account
    • 所有的權限( 網路使用權限、資料夾使用權限 ... 等),都與該帳號相同。

Services permissions
這權限就複雜多了,
簡單的說,Services permissions是針對哪些user 或是哪些 group,
可以對Service做哪些操作。
這些操作包括Service的 啟動、停止、查詢Service資訊、更改Service資訊 ... 等。





2011年7月1日 星期五

ServiceAccount設定

ServiceAccount設定為 ServiceAccount.User時

在安裝的過程中會要求帳號密碼
記得帳號需要加上電腦的名稱
ComputerName \ UserName

可參考 這裡

效能計數器登錄區已損毀 windows7

安裝MS SQLServer 2008時出現了這個問題
上網查了一下
發現要改註冊碼
可以參考 這裡 來做修正
這幾天安裝程式還真累人 ...

2011年6月28日 星期二

抓取檔案目前的權限狀態

因為要設定檔案的權限
而且不想改變該檔其他帳號的權限
所以用了下方的方式去抓取 以及設定


        private static void SetAccessRule(
            string fileName
            , string accountName
            , FileSystemRights rights
            , AccessControlType controlType)
        {
            var account
                = new NTAccount(accountName);

            var accessRule
                = new FileSystemAccessRule(account, rights, controlType);

            var securityDescriptor
                = new FileSecurity(fileName, AccessControlSections.Access);
         
            var accessRuleCollection
                = securityDescriptor.GetAccessRules(true, true, typeof(NTAccount));
         
            securityDescriptor.SetAccessRule(accessRule);

            File.SetAccessControl(fileName, securityDescriptor);

        }

2011年6月27日 星期一

installutil.exe - Win 7下注意事項

因為win7的權限控管
所以在使用installutil 時
記得要先用 Adminstrator 的角色 開啟 Visual Studio的 command 工具列
否則會一直收到 system.security.securityexception the source was not found ... 的 Exception